La regola generale è la seguente: se hai due variabili a e b e fai
a = b;
ad a viene assegnata una copia di b, quindi se modifichi a, il valore di b resta invariato.
Questo pero non deve trarti in inganno nel caso dei puntatori...perche se a e b sono puntatori a strutture, come nel caso delle liste, la regola sopra afferma che il valore della variabile puntatore b viene copiato nella variabile a: ma il valore di b non è il valore della struttura, ma l'indirizzo a cui punta b. In sostanza a e b punteranno alla stessa struttura, quindi se modifichi la struttura puntata da a stai anche modificando la struttura putnata da b perche entrambi puntano alla stessa zona di memoria.
Viceversa, se a e b non sono puntatori a strutture, ma sono strutture esse stesse, con
a = b;
copi tutti i valori di b all'interno di a ottenendo quindi due oggetti separati con gli stessi valori.

Rispondi quotando