Cosa stampa il seguente programma ?
#includeint 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:
- a=11; b=0; c=0;
- a=13; b=2; c=11;
- a=11; b=2; c=11;
- 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