Les pointeurs en C
Fermé
axelvdk
-
23 juin 2012 à 14:12
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 23 juin 2012 à 16:02
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 23 juin 2012 à 16:02
1 réponse
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
23 juin 2012 à 16:02
23 juin 2012 à 16:02
Bonjour,
Attention aux struct. Vous l'utilisez mal.
struct L{char cLu; L *next;} *courant ; *deb;
Il ne faut pas oublier le struct pour définir *next. De plus, ne mets pas de ";" entre courant et deb.
deb=NULL; //initialisation et allocation memoire
Non, NULL n'alloue rien du tout.
deb=(struct L*)malloc(sizeof(struct));
Cette instruction réalise l'allocation et l'initialisation. Donc pas besoin de mettre deb à NULL juste avant. De plus le cast est superflue.
crt=deb
D'où sort crt ? C'est le pointeur courant j'imagine ?
comment se fait-il que crt=crt->next n'écrase rien ?
Comment ça ? malloc n'initialise pas la zone mémoire pointée. Donc pas d'écrasement. Ou alors précisez mieux votre question.
que devient crt quand il reçoit crt->next ou la mémoire qui lui est allouée ?
Beh crt devient prend la mémoire de crt->next, donc la valeur sera : crt->next->cLu, non intialisé ici.
Attention aux struct. Vous l'utilisez mal.
struct L{char cLu; L *next;} *courant ; *deb;
Il ne faut pas oublier le struct pour définir *next. De plus, ne mets pas de ";" entre courant et deb.
deb=NULL; //initialisation et allocation memoire
Non, NULL n'alloue rien du tout.
deb=(struct L*)malloc(sizeof(struct));
Cette instruction réalise l'allocation et l'initialisation. Donc pas besoin de mettre deb à NULL juste avant. De plus le cast est superflue.
crt=deb
D'où sort crt ? C'est le pointeur courant j'imagine ?
comment se fait-il que crt=crt->next n'écrase rien ?
Comment ça ? malloc n'initialise pas la zone mémoire pointée. Donc pas d'écrasement. Ou alors précisez mieux votre question.
que devient crt quand il reçoit crt->next ou la mémoire qui lui est allouée ?
Beh crt devient prend la mémoire de crt->next, donc la valeur sera : crt->next->cLu, non intialisé ici.