Typedef ->problème de compréhension

Typedef ->problème de compréhension - C - Programmation

Marsh Posté le 18-09-2003 à 15:03:04    

:hello:  
Sur cette déclaration de structure suivante :

Code :
  1. typedef struct element
  2. {
  3.     struct element *suiv;
  4. }syn_element,*pt_element;


 
Je comprend très bien que syn_element soit identique à struct element et constitue un nouveau type pour des raisons de simplicité...
Au lieu de mettre "struct element l1" on met "syn_element l1" ce qui est plus rapide et plus compréhensible selon le nom donné...
 
Par contre pour

Code :
  1. *pt_element

je comprend pas du tout : c'est un pointeur sur struct element ??? Alors pkoi pas faire

Code :
  1. struct element *pt_element

ou bien meme

Code :
  1. syn_element *pt_element

???

Reply

Marsh Posté le 18-09-2003 à 15:03:04   

Reply

Marsh Posté le 18-09-2003 à 15:05:26    

bah y'a rien a comprendre.... ca te permet de virer le "*" lors des declarations de variables / parametres
 

Reply

Marsh Posté le 18-09-2003 à 15:06:14    

et si t'abandonnais les synthaxes à la con qu'on peut faire en C pour un truc clair ?
 

Code :
  1. struct _element
  2. {
  3.   struct _element *next;
  4. };
  5. typedef struct _element Element;
  6. Element e, *p;


Message édité par Taz le 18-09-2003 à 15:24:25
Reply

Marsh Posté le 18-09-2003 à 15:09:36    

Taz a écrit :

et si t'abandonné les synthaxe à la con qu'on peut faire en C pour un truc claire ?
 

Code :
  1. struct _element
  2. {
  3.   struct _element *next;
  4. };
  5. typedef struct _element Element;
  6. Element e, *p;




Je suis obligé d'y passer au C :pfff:  
 
Tu parles d'un langage objet ,style C++ ou java ??
Y a t-il besoin d'apres toi de tout savoir sur le C pour pouvoir aborder sans aucun probleme le java ou C++ ?

Reply

Marsh Posté le 18-09-2003 à 15:11:50    

neo9205 a écrit :


Je suis obligé d'y passer au C :pfff:  
 
Tu parles d'un langage objet ,style C++ ou java ??
Y a t-il besoin d'apres toi de tout savoir sur le C pour pouvoir aborder sans aucun probleme le java ou C++ ?


Il te parle pas d'abandonner le C, mais d'écrire des choses équivalentes et claires.

Reply

Marsh Posté le 18-09-2003 à 15:16:21    

skeye a écrit :


Il te parle pas d'abandonner le C, mais d'écrire des choses équivalentes et claires.


 
Mon code n'est pas clair ? Qu'aurais je du mettre comme code ??

Reply

Marsh Posté le 18-09-2003 à 15:19:42    

neo9205 a écrit :


 
Mon code n'est pas clair ? Qu'aurais je du mettre comme code ??
 


 
à priori non puisque tu ne le comprends pas! [:skeye]  
Lis sa réponse jusqu'au bout, au moins!

Reply

Marsh Posté le 18-09-2003 à 15:41:54    

skeye a écrit :


 
à priori non puisque tu ne le comprends pas! [:skeye]  
Lis sa réponse jusqu'au bout, au moins!


 
Ah ok...excusez moi ,j'avais pas lu la fin...c'est vrai que c'est plus clair, mais c'est pas de ma faute, c'est l'ecole qui fait ce type de syntaxe alors je suis bien obligé de la comprendre cette syntaxe bizzare :(


Message édité par neo9205 le 18-09-2003 à 15:44:21
Reply

Marsh Posté le 18-09-2003 à 15:48:34    

Code :
  1. typedef struct element
  2.   {
  3.         struct element *suiv;
  4.   }syn_element,*pt_element;


 
Est équivalent à:
 

Code :
  1. typedef struct element
  2.   {
  3.         struct element *suiv;
  4.   }syn_element;
  5. typedef syn_element* pt_element;


 
Tu déclare deux alias un pour le type struct element
 et un pour le type struct element *


---------------
Le Tyran
Reply

Marsh Posté le 18-09-2003 à 15:48:52    

Taz a écrit :

et si t'abandonnais les synthaxes à la con qu'on peut faire en C pour un truc clair ?
 

Code :
  1. struct _element
  2. {
  3.   struct _element *next;
  4. };
  5. typedef struct _element Element;
  6. Element e, *p;




 
Ak oki merci c'est vachement plus clair comme ça : en fait j'avais raison alors:  
*pt_element est bien un pointeur sur "struct element".

Reply

Marsh Posté le 18-09-2003 à 15:48:52   

Reply

Marsh Posté le 19-09-2003 à 11:43:00    

neo9205 a écrit :


 
Ak oki merci c'est vachement plus clair comme ça : en fait j'avais raison alors:  
*pt_element est bien un pointeur sur "struct element".


 
et masquer un * dans un typedef c'est pas d'une clarté féroce....

Reply

Marsh Posté le 19-09-2003 à 11:44:01    

philou_a7 a écrit :


 
et masquer un * dans un typedef c'est pas d'une clarté féroce....

ben si, ça s'appelle faire un type opaque

Reply

Marsh Posté le 19-09-2003 à 14:23:30    

Taz a écrit :

ben si, ça s'appelle faire un type opaque


 
un oeuf de paques ?  :??:  
 
 
 
 
 
 :whistle:

Reply

Marsh Posté le 19-09-2003 à 14:36:58    

Taz a écrit :

ben si, ça s'appelle faire un type opaque

et c'est bien ou pas (d'après toi) ?


---------------
http://runnerstats.net
Reply

Marsh Posté le 19-09-2003 à 15:24:21    

noldor a écrit :

et c'est bien ou pas (d'après toi) ?

ça dépend, chachez la nature pointeuresque d'un type, ça peut poser des problèmes, mais il y a des exemples de types opaques très bien, nos amis les FILE*

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed