2009-11-28 3 views
5

Est-il possible de définir une structure avec un pointeur vers ce type de structure? Ce que je veux dire est:Structure C avec pointeur sur soi

typedef struct { 
    char* name; 
    node* parent; 
} node; 

Autant que j'ai essayé ou lu, je ne sais pas comment faire ceci ou si c'est même possible.

+1

doublons possibles: http://stackoverflow.com/questions/506366/ http://stackoverflow.com/questions/588623/ –

Répondre

20

Oui, mais vous devez nommer la structure pour pouvoir vous y référer.

typedef struct node_ { 
    char* name; 
    struct node_ * parent; 
} node; 

Le nom node ne devient déclaré après la structure est complètement définie.

+0

Merci beaucoup ! C'est le * détail * que je ne connaissais pas! :) – shazarre

0

Oui, cela est possible.

Voici comment sont faites les listes chaînées!

-2

Pourquoi ne l'essayez-vous pas? Vous devez mettre un nom à la structure, et oui, c'est ainsi que fonctionnent les structures de données récursives.

+0

OP a dit qu'il l'avait déjà essayé. – Grandpa

+0

Mais, comme je l'ai écrit, j'ai essayé ID - ne fonctionnait pas, alors j'ai demandé ici :) – shazarre

1

Je suis d'accord ... et les arbres. Vous n'avez pas à le regarder comme "l'oeuf et le chiken" car la définition d'un type se produit toujours avant d'en instancier un. Donc, avoir une variable membre du même type de l'objet est juste difficile quand vous commencez à mélanger les deux dans votre tête!

16

Vous pouvez utiliser un incomplete type dans les typedef:

typedef struct node node; 

struct node { 
    char *name; 
    node *parent; 
}; 
Questions connexes