サイズ 1 の配列を宣言し、その配列に 5 つの要素を格納して取得することはできますか?
配列を宣言し、arr[1]
5 つの要素を格納するコードを試してみました。実際に5つの要素を格納することができました! どうだった?
サイズ 1 の配列を宣言し、その配列に 5 つの要素を格納して取得することはできますか?
配列を宣言し、arr[1]
5 つの要素を格納するコードを試してみました。実際に5つの要素を格納することができました! どうだった?
これがC(またはC ++)の場合、配列のサイズよりも多くの要素を簡単に格納できます。
#include <stdio.h>
int main (void) {
int x = 0;
int a[1]; // so that a[0] is the only valid element
a[1] = 7; // write beyond end of array
printf ("x=%d, &a[0]=%p, &a[1]=%p, &x=%p\n", x, &(a[0]), &(a[1]), &x);
return 1;
}
ただし、そうすると、未定義の動作が発生し、おそらく他の情報が上書きされるため、実際には良い考えではありません。
私のシステムでは、上記のコードは次のように出力されます。
x=7, &a[0]=0xbf9bb638, &a[1]=0xbf9bb63c, &x=0xbf9bb63c
x
ゼロに設定したにもかかわらず、明示的に変更したことはありません。これは、配列の終わりを超えて書き込むことが影響を受けているためです(との2つの同一のアドレスからわかるようにa[1]
)x
。