Avatar billede palle_pirat Nybegynder
19. februar 2009 - 03:43 Der er 14 kommentarer og
1 løsning

Hvad betyder ->

Hej

Jeg sidder med en grundbog i c og jeg er kommet til et emne om struktur. I bogen er der et eksempel:

//Udsnit af eksemplet
struct personType
{
    char forNavn[20];
    char EfterNavn[20];
    int alder;
    struct personType *next;
};

//Et andet sted i programmet
struct personType *pNy, *pGammel, *pStart;

//Et tredje sted i programmet
pGammel->next = pNy;

Nu kommer mit spørgsmål: Hvad betyder pilen '->'?
Altså pGammel->next = pNy?

På forhånd tak.
Avatar billede arne_v Ekspert
19. februar 2009 - 03:50 #1
Syntaxen i C er:

enstruct.etfelt

men:

enpointertilstruct->etfelt
Avatar billede arne_v Ekspert
19. februar 2009 - 03:51 #2
Du kan også betragte:

enpointertilstruct->etfelt

som ern forkortelse for:

(*enpointertilstruct).etfelt
Avatar billede palle_pirat Nybegynder
19. februar 2009 - 03:59 #3
Jeg takker for det hurtige svar og er glad for at se at jeg ikke er den eneste natteravn herinde.
Okay, jeg forstår det du fortæller mig, men jeg er ikke helt med på hvad det er vi skal med *next pointeren.
Avatar billede arne_v Ekspert
19. februar 2009 - 04:04 #4
Klokken er kun 22 her.

:-)
Avatar billede palle_pirat Nybegynder
19. februar 2009 - 04:05 #5
He he... Hvor i verden er det?
Avatar billede arne_v Ekspert
19. februar 2009 - 04:06 #6
pGammel er en pointer som peger på en personType struct

personType struct indeholder et felt next med en pointer til en personType struct (næste i rækken)

pGammel->next = pNy

sætter next feltet i det som pGammel peger på til at pege på pNy
Avatar billede palle_pirat Nybegynder
19. februar 2009 - 04:11 #7
NÅÅÅÅ!! Hold da ferie, det er ligesom en åbenbaring. Jeg takker mange gange for svaret. Og venligst læg et svar.
Avatar billede arne_v Ekspert
19. februar 2009 - 04:21 #8
svar

(USA's østkyst)
Avatar billede palle_pirat Nybegynder
19. februar 2009 - 04:22 #9
Nå, okay.
Avatar billede palle_pirat Nybegynder
19. februar 2009 - 04:23 #10
Hvis du har tid må du gerne forklare denne sætning:
pStart = pGammel = pNy = (struct personType *) malloc(sizeof(struct personType));
Kan godt oprette et nyt spørgsmål hvis du vil ha' point.
Avatar billede arne_v Ekspert
19. februar 2009 - 04:24 #11
pStart = pGammel = pNy = ...;

er en forkortelse for:

pNy = ...;
pGammel = pNy;
pStart = pGammel;

Jeg ville aldrig bruge den konstruktion.
Avatar billede arne_v Ekspert
19. februar 2009 - 04:25 #12
pNy = (struct personType *) malloc(sizeof(struct personType));

allokerer en klump memory af størrelsen på struct personType og sætter pNy til at pege på det
Avatar billede palle_pirat Nybegynder
19. februar 2009 - 04:32 #13
Tak for det. Så udtrykket (struct personType *) betyder altså "størrelsen" på personType-struct'en? Skal jeg oprette et nyt spørgsmål så du kan få point?
Avatar billede arne_v Ekspert
19. februar 2009 - 04:36 #14
sizeof(struct personType)

er størrelsen på en struct personType

(struct personType *)

betyder "Opfat det på højre side som værende en pointer til struct personType" og er nødvendig fordi vi bare allokerer en klump memory som kunne være hvad som helst
Avatar billede palle_pirat Nybegynder
19. februar 2009 - 04:40 #15
Jeg takker endnu engang! Jeg har oprettet et nyt spørgsmål, så hvis du lægger et svar der så er der en smule point mere.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester