2009 – 3

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