2009-11-28 24 views
5

¿Es posible definir una estructura con un puntero a ese tipo de estructura? Lo que quiero decir es:Estructura C con puntero a sí mismo

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

Por lo que he intentado o leído, no sé cómo hacerlo o si es posible.

+1

duplicados posibles: http://stackoverflow.com/questions/506366/ http://stackoverflow.com/questions/588623/ –

Respuesta

20

Sí, pero debe nombrar la estructura para que pueda consultarla.

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

El nombre node sólo llega a ser declarado después de la estructura está completamente definido.

+0

Muchas gracias ! Ese es el * detalle * ¡No lo sabía! :) – shazarre

0

Sí, esto es posible.

¡Así es como se hacen las listas de enlaces!

-2

¿Por qué no lo intentas? Debes ponerle un nombre a la estructura, y sí, esta es la forma en que funcionan las estructuras de datos recursivas.

+0

OP dijo que ya lo intentó. – Grandpa

+0

Pero, como escribí, intenté con la identificación, no funcionó, así que pregunté aquí :) – shazarre

1

Estoy de acuerdo ... y árboles. No tiene que mirarlo como "el huevo y el pollo" porque la definición de un tipo siempre ocurre antes de crear uno. Así que tener una variable miembro del mismo tipo del objeto es simplemente complicado cuando empiezas a mezclar los dos en tu cabeza.

16

Puede utilizar un incomplete type en los typedef:

typedef struct node node; 

struct node { 
    char *name; 
    node *parent; 
}; 
Cuestiones relacionadas