NounouRs a écrit :
Lorsqu'on déclare une structure comme ca :
Code :
- typedef struct noeud
- { int orig_x;
- int orig_y;
- int fin_x;
- int fin_y;
- // ici pour ajouter des infos, int, etc...
- char etat[7];
- struct noeud *HG;
- struct noeud *HD;
- struct noeud *BG;
- struct noeud *BD;
- } Type_noeud;
- typedef Type_noeud *Arbre;
|
Comment peut on s'en servir ??
par exemple, la fonction de création d'un élément de la structure est bien :
Code :
- Arbre arbre = (Arbre) malloc(sizeof(Type_noeud));
|
|
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
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
Message édité par Sve@r le 16-11-2004 à 12:15:38