un puntatore contiene un indirizzo di memoria , un puntatore usato come parametro di una funzione contiene UNA COPIA dell'indirizzo passato alla funzione , quindi si può cambiare il contenuto puntato dall'indirizzo , ma essendo una copia non puoi cambiare il puntatore nel main , che continuerà a contenere lo stesso indirizzo .
dovresti modificare la funzione , facendo restituire il puntatore , e approfondire il concetto che ti ho spiegato , tieni presente che quando passi un puntatore a una funzione , passi una copia di un indirizzo .
prototipo :
punt crea_lista(punt P1,punt P0,int N);
nel main :
P1=crea_lista(P1,P0,N);
codice:punt crea_lista(punt P1,punt P0,int N) { int I, cont=0; for (I=0;I<N;I++) { P1=(vagone*)malloc(sizeof(vagone)); printf("Inserisci valore: "); scanf("%d",&(P1->ele)); if (cont==0) { P1->punt=NULL; cont=cont+1; } else P1->punt=P0; P0=P1; system("PAUSE"); printf("%d\n",P1->punt); } return P1;

Rispondi quotando