我在 C 中有以下内容:
int x = 0;
int *a = &x;
void foo(int *a)
{
static int x = 0;
x++;
*a += x;
a = &x;
*a = x + 10;
}
int _tmain(int argc, _TCHAR* argv[])
{
foo(a);
foo(a);
printf("%d\n", *a);
return 0;
}
我可以清楚地调试它并看到该行*a += x
没有做任何事情,而且我可以看到 x 的值在退出函数前一秒钟是22
并且它打印出来13
。
当我在脑海中这样做时,我已经选择了 34,据我所知,这应该是正确的答案。有人可以解释我可能错在哪里吗?