È dato il seguente programma:
#includeint x,y; void alfa(int *x, int y) { y=*x*y; *x=*x*y; } void beta(int *x, int y) { *x=*x*y; y=*x*y; } main() { x=3; y=3; alfa(&x, y); printf("x=%d y=%d", x, y); x=3; y=3; beta(&x, y); printf(" x=%d y=%d\n", x, y); } Cosa viene visualizzato a video dall’esecuzione di main()?
- x=9 y=3 x=27 y=3
- x=27 y=3 x=9 y=3
- x=27 y=3 x=27 y=3
- x=27 y=3 x=9 y=9
Soluzione: b (x=27 y=3 x=9 y=3)
Sia in alfa() che in beta() i parametri sono passati con modalità diverse (x per riferimento, y per valore)
In alfa()
- y = *x * y = 3 * 3 = 9
- *x = *x * y = 3 * 9 = 27
e nel main()
- x=27
- y=3
In beta()
- *x = *x * y = 3 * 3 = 9
- y = *x * y = 9 * 3 = 27
e nel main()
- x=9
- y=3