2011-10-02 4 views
1

Possible en double:
Typedef pointers a good idea?Confusion avec typedef et pointeurs en C

Je suis confondu avec ce qui suit:

typedef struct body *headerptr; 

Maintenant, quand je crée quelque chose avec le type headptr qui pointe vers un corps struct, pour créer un nouveau headerptr serait comme suit (je ne suis pas sûr si je fais t son juste titre):

headerptr newHeadptr; 

Ai-je raison de penser que ce serait un pointeur qui pointe vers un corps de struct?

+0

essayer. Si ça marche, super. Si ça ne revient pas ici. –

+1

Très bien. Eh bien, le compilateur ne semble pas se plaindre, et ça marche. Je ne sais pas si je le fais correctement. – diesel

Répondre

3

Oui. headerptr est maintenant équivalent à struct body*.

2

Ce serait un pointeur qui pointe vers un corps struct.

La façon dont vous avez déclarée, newHeadptrpourrait à un point de struct body. Rappelez-vous, cependant, que vous n'avez pas alloué struct body pour qu'il pointe vers. Initialement, newHeadptr aura juste une valeur de déchets. Pour remédier à cela, vous pouvez à ceci:

headerptr newHeaderptr = malloc(sizeof(*newHeaderptr)); 

ou:

struct body newBody; 
headerptr newHeaderptr = &newBody; 
+0

Merci pour cela, je l'ai déjà défini mais je ne l'ai pas posté. ; D – diesel

+2

Peut-être plus clair à faire 'headerptr newHeaderptr = malloc (sizeof * newHeaderptr)' –

+0

@ChrisLutz, c'est un bon point. – Caleb