J'ai du mal avec les struct et les pointeurs ensemble ! - C - Programmation
Marsh Posté le 16-11-2004 à 11:59:05
ReplyMarsh Posté le 16-11-2004 à 12:13:23
NounouRs a écrit : Lorsqu'on déclare une structure comme ca :
|
Ce serait déjà une bonne idée de nommer tes types "t_qqchose". Comme cela, tu ne te mélangeras plus entre "type" et "variable".
Sinon, ton allocation est correcte. Ta variable "arbre" est un pointeur et a été allouée avec une taille suffisante pour stocker une structure "noeud".
Maintenant, si tu veux référencer un membre de "*arbre" (par exemple si tu veux remplir "orig_x" ), il te faut parler à
"(*arbre).orig_x". Mais comme cette écriture est fastidieuse, tu peux la remplacer par "arbre->orig_x". Par exemple
Code :
|
Ensuite, si tu veux t'adresser à un membre qui est un pointeur, par exemple "NG", il faut parler à
"*arbre->NG". L'étoile devant le mot "arbre" s'adresse en fait à "NG" (confusion possible)
Pour résumer
- la flèche après une variable signifie que la variable est un pointeur sur une structure
- l'étoile devant un nom de variable de type "struct" signifie qu'on s'adresse à un membre qui est un pointeur
Marsh Posté le 16-11-2004 à 13:07:50
Citation :
|
le typedef te permet d'avoir un certain polymorphisme dans ton code C (permettre à un objet d'un certain type d'etre utilisé à la place d'un autre), celà il ne fait que traduire en C le nom d'un type vers un autre.
C'est plus logique de faire
Code :
|
puis
Code :
|
Marsh Posté le 16-11-2004 à 11:47:48
Lorsqu'on déclare une structure comme ca :
Comment peut on s'en servir ??
par exemple, la fonction de création d'un élément de la structure est bien :
[cpp][ Arbre arbre = (Arbre) malloc(sizeof(Type_noeud));/cpp]