2002 – 1

Cosa stampa il seguente programma ?

#include 
int prova(int*, int);
int main(void)
{
    int a, b, c;
    a=11;
    b=0;
    c=prova(&a, b);
    printf("a = %d; b = %d; c = %d", a, b, c);
    return 0;
}
int prova(int *x, int y)
{
    *x=y+*x;
    y =*x+2;
    return *x;
}

Risposte:

  1. a=11; b=0; c=0;
  2. a=13; b=2; c=11;
  3. a=11; b=2; c=11;
  4. a=11; b=0; c=11;

Soluzione: d.


La variabile a viene passata alla funzione prova() per riferimento mentre la variabile b è passata per valore.

Osserva

  • Nel main()
    a=11
    b=0
  • In prova()
    *x=(a)=11
    y=0
  • (a)=y+(a)=0+11=11
  • y=(a)+2=11+2=13
  • Nel main()
    a=11
    b=0
    c=(a)=11