#include<stdio.h>
int f(int x,int *y,int *z,int w){
x=x+5;*y=*y+x;*z=*z+*y-x;w=w*x-1;
printf("%d %d %d %d \n",x,*y,*z,w);}
int main(void){
int x,y,*z,w;
x=3;y=x*x-3;z=&y;w=*z;
f(x,&x,z,w);
printf("%d %d %d %d \n",x,y,*z,w);
return 0;}

[実行結果]
8 11 9 47
11 9 9 6

何故2行目の実行結果になるのでしょうか?