int x=0;
int*a=&x;
void foo(int * a) {
static x=0;
x++;
printf("x's value %d ", x);
*a+=x;
a=&x;
*a=x+10;
}
int main(void) {
foo(a);
printf("a's value %d\n ", *a);
foo(a);
printf("a's value %d ", *a);
return 1;
}
我正在尝试分析上述内容。foo 的第一次迭代,当函数到达 时a=&x
,函数停止后的 a 会受到所发生的事情的影响,因为在函数结束时指针会回到他指向的原始值,现在 1. 静态 x现在也是 1。第二次迭代:x 是如何得到值 12 的?!静态x
变成了 2,所以我期望 3 是 a 的值。
输出是:
x's value 1 a's value 1
x's value 12 a's value 13