C で、次の結果 x[1] が 2 になるのはなぜですか?
int a = 2, x;
...
printf("x[1] = ", &x[1])
そうではありません。これにより、未定義の動作が発生し、何かが発生する可能性があります。定義された方法で、配列の末尾を超える要素にアクセスすることはできません。
発生する可能性が最も高いのは、がスタックのa
「上」にあるため、 と同じアドレスを持つことになりますが、それは決して保証されません。x
x[1]
a
もちろん、これはあなたprintf
のタイプミスが前提です。そのままでは、コンパイルさえしません。質問のタイトルは出力ではなくの値について尋ねているだけなので、タイプミスだと思います。x[1]
それを機能させるには、次のようなものを使用する必要があります。
printf ("x[1] = %d\n", (&x)[1]);
これも私のシステムで印刷2
されますが、他の場所ではまったく異なることを行う可能性があります。