/* FILE: swap.cpp last change: 12-Mar-2001 * Definizione di una funzione swap per scambiare il valore di due numeri * interi */ #include void swap_wrong(int x, int y); // Prototipo della funzione swap_wrong void swap(int *x, int *y); // Prototipo della funzione swap main() { int a, b; cout << "Dammi il valore di a: "; cin >> a; cout << "Dammi il valore di b: "; cin >> b; cout << "I numeri assegnati sono: " << a << " e " << b << endl; swap_wrong(a, b); cout << "Dopo l'invocazione di swap_wrong, a = " << a << " e b = " << b << endl; swap(&a, &b); // Devo passare l'indirizzo di a e b cout << "Dopo l'invocazione di swap, a = " << a << " e b = " << b << endl; } // Passaggio per valore: all'interno della funzione i dati sono stati // scambiati, ma fuori dalla funzione i dati sono rimasti inalterati. void swap_wrong(int x, int y) { cout << "All'inizio di swap_wrong, x = " << x << " e y = " << y << endl; int tmp = x; x = y; y = tmp; cout << "Alla fine di swap_wrong, x = " << x << " e y = " << y << endl; } // Per poter modificare il contenuto delle variabili, devo utilizzare i // puntatori: passaggio per riferimento. void swap(int *x, int *y) { cout << "All'inizio di swap, *x = " << *x << " e *y = " << *y << endl; int tmp = *x; *x = *y; *y = tmp; cout << "Alla fine di swap, *x = " << *x << " e *y = " << *y << endl; }