cavallini25
29-12-2012, 18:28
Buonasera a tutti,
Vi sottopongo il listato prima di procedere alle domande:
void foo1(int a, int b) { a=b; }
void foo2(int& a, int b) { a=b; }
void foo3(int* a, int* b) { a=b; }
void foo4(int* a, int* b) { *a=*b; }
void main()
{
int m=3, n=5;
foo1(m,n);
cout << m << ’ ’ << n << ’\n’;
m=3;
n=5;
foo2(m,n);
cout << m << ’ ’ << n << ’\n’;
m=3;
n=5;
foo3(&m,&n);
cout << m << ’ ’ << n << ’\n’;
m=3;
n=5;
foo4(&m,&n);
cout << m << ’ ’ << n << ’\n’;
}
l'output di questo programma è:
3 5
5 5
3 5
5 5
Quello che desideravo chiedervi era una delucidazione sul funzionamento del passaggio di parametri attraverso le funzioni.
E' palese che la funzione FOO1 crea una copia delle variabili al suo interno e ciò non modifica le variabili m ed n all'esterno della funzione.
Potete chiarirmi meglio il funzionamento e il ragionamento di come funziona il passaggio con i puntatori e le loro associazioni? (* e &)
Grazie in anticipo a tutti per i chiarimenti, spero di essere stato abbastanza chiaro nella domanda.
Saluti.
Marco.
Vi sottopongo il listato prima di procedere alle domande:
void foo1(int a, int b) { a=b; }
void foo2(int& a, int b) { a=b; }
void foo3(int* a, int* b) { a=b; }
void foo4(int* a, int* b) { *a=*b; }
void main()
{
int m=3, n=5;
foo1(m,n);
cout << m << ’ ’ << n << ’\n’;
m=3;
n=5;
foo2(m,n);
cout << m << ’ ’ << n << ’\n’;
m=3;
n=5;
foo3(&m,&n);
cout << m << ’ ’ << n << ’\n’;
m=3;
n=5;
foo4(&m,&n);
cout << m << ’ ’ << n << ’\n’;
}
l'output di questo programma è:
3 5
5 5
3 5
5 5
Quello che desideravo chiedervi era una delucidazione sul funzionamento del passaggio di parametri attraverso le funzioni.
E' palese che la funzione FOO1 crea una copia delle variabili al suo interno e ciò non modifica le variabili m ed n all'esterno della funzione.
Potete chiarirmi meglio il funzionamento e il ragionamento di come funziona il passaggio con i puntatori e le loro associazioni? (* e &)
Grazie in anticipo a tutti per i chiarimenti, spero di essere stato abbastanza chiaro nella domanda.
Saluti.
Marco.