Ragazzi, posso chiedervi un piacere?
Potete spiegarmi in modo sintetico il passaggio di parametri per valore e per riferimento? ( Argomento Funzioni )
Grazie mille anticipatamente.
Ragazzi, posso chiedervi un piacere?
Potete spiegarmi in modo sintetico il passaggio di parametri per valore e per riferimento? ( Argomento Funzioni )
Grazie mille anticipatamente.
Con i sogni possiamo conoscere il futuro...
passaggio per valore:
int a = 0;
int b = 0;
fun(val a, val b){
a++;
b++;
stampo1(a e b) //stampa a=1 e b=1
}
fun(a,b);
stampo2(a e b) //stampa a=0 e b=0
praticamente nel passaggio per valore quando chiami la funzione fun, a e b dentro la funzione sono due nuove variabili che contengono il valore che gli è stato passato e vengono memorizzate nel blocco allocato per la funzione, una volta che termina la chiamata alla funzione quelle variabili prima create vengono eliminate assieme a tutto il blocco allocato in memoria per la funzione stessa.
passaggio per riferimento:
int a = 0; //dopo a++ questa vale 1
int b = 0; //dopo b++ questa vale 1
fun(rif a, rif b){
a++; // incremento la variabile a esterna alla funzione
b++; // incremento la variabile b esterna alla funzione
stampo1(a e b) //stampa a=1 e b=1
}
fun(a,b);
stampo2(a e b) //stampa a=1 e b=1
entrando nello specifico quando fai una chiamata per riferimento i parametri formali sono alias per i parametri attuali, quindi a e b all'interno della funzione puntano all'indirizzo di memoria delle variabili a e b esterne alla funzione, quindi se le modifichi all'interno della funzione vai in realtà a modificarle all'esterno.
spero di essere stato chiaro,
buono studio.