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]