se io ho una struttura di questo tipo:
e devo fare una funzione che crea un nuovo oggetto di tipo node, di cui ho il prototipo obligato così:codice:struct node { char *name; list children; node_type type; // node_type è un enum int id; }; typedef struct node *node;
int new_text_node(node *n, char *text, int x);
io l'ho fatta in questo modo:
ma mi chiedo, l'allocazione di memoria per il nodo t, va fatta o non va fatta? ho provato in tutte e due i modi, e funziona in entrambe le situazioni...ma una delle due evidentemente sarà sagliata...codice:int new_text_node(node *n, char *text, int x) { node t = malloc(sizeof(struct node)); node t; t->id = x; t->name = (char *)malloc(sizeof(char) * strlen(text) + 1); strcpy(t->name,text); t->type = TEXT_NODE; t->children = NULL; *n = t; return 0; }

Rispondi quotando