私は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
が何もしないことを確認できます。さらに、関数を終了するわずか1秒前のxの値がで22
あり、出力されることがわかり13
ます。
私が頭の中でそれをしたとき、私は34に行きました、それは私が見る限り正しい答えであるはずです。誰かが私が間違っているかもしれない場所を説明できますか?