Si consideri il seguente frammento di programma:
void foo(int *a, int b) { b = b * *a; *a = *a * b; } main() { int a=2; int b=3; foo(&a, b); foo(&b, a); printf("a=%d, b=%d\n", a, b); }Cosa viene visualizzato a video dall’esecuzione di main()?
Soluzione: a=12, b=108
La funzione foo() chiamata con gli argomenti x e y modifica il valore di x che diventa x*x*y
Dopo la prima chiamata con parametri a e b
- a=12
- b=3
Dopo la seconda chiamata con parametri b e a
- a=12
- b=108