¿Cómo pasar el puntero de flecha a la función?

struct node { int x; struct node *next; }; void allocateMemory(struct node *some_node) { some_node = malloc(sizeof(struct node)); } 

En otra función:

 struct node add(struct node *root, struct node *thisNode, int value) 

Intento llamar a esto:

 allocateMemory(thisNode->next); 

Me sale un error de ejecución. No hace nada. Sin embargo, cuando hago lo mismo que allocateMemory () en dicha función, es decir:

 thisNode->next = malloc(sizeof(struct node)); 

Hace lo que se supone que debe hacer. ¿Qué estoy haciendo mal?

Necesitas paas puntero a puntero .

Cuando tiene el puntero, puede cambiar el valor al que apunta el puntero, y cuando desea cambiar el puntero real, debe ir un paso más profundo.

También la función de agregar no debe devolver valor sino puntero?

 struct node { int x; struct node *next; }; void allocateMemory(struct node **some_node) { *some_node = (struct node*)malloc(sizeof(struct node)); } struct node* add(struct node *root, struct node *thisNode, int value) { allocateMemory(&thisNode->next); thisNode->x = value; root->next = thisNode; return thisNode; } 

Aquí en ese código:

 void allocateMemory(struct node *some_node) { some_node = malloc(sizeof(struct node)); } 

Puedes escribir :

 void allocateMemory(struct node **some_node) { *some_node = malloc(sizeof(struct node)); } 

Y mientras llamas:

 allocateMemory(&thisNode->next);