cambiando la funzione come mi hai suggerito, poi mi da un errore per ogni volta che usavo n nella funzione nuovo_nodo. Mettendo la notazione (*n) ogni volta che uso n nella funzione, non da piu errori nella funzione:
codice:
int nuovo_nodo(nodo **n, char *name, int x) { 
	printf("creato nuovo nodo\n");
	(*n) = (nodo*)malloc(sizeof(nodo));
	(*n)->nome = (char *)malloc(sizeof(char) * 50);
	(*n)->nome = strcpy((*n)->nome,name);
	(*n)->id = x;
	return 0;
}
pero poi i problemi sono nel main.. non posso piu fare:

codice:
nodo n;
prova = nuovo_nodo(&n,"prova",6);
maledetti puntatori!!