質問です。以下のプログラムの最終的な出力が7になるのがどうしても理解できません。
最初の*&x=,x=が2,2になるのはわかるんですが、2度目の*&x=が5になるのがわからなくて・・・
もし*&x=5なら最後の出力は10になる気がするのですが。

#include <stdio.h>

int x=1;

void f(int *p){
*p+=x;
}
int main(void){
int y;
f(&x);
printf("*&x=%d,x=%d\n",*&x,x);
{
int x=5;
printf("*&x=%d,x=%d\n",*&x,x);
f(&x);
y=x;
}
x=y;
printf("%d\n",x);
return 0;
}