int a[2]={1210,15};
printf("%d",a[33] );
出力
1073828132
a[33]配列要素が存在しないのに、印刷しようとしているときにエラーがスローされないのはなぜですか
int a[2]={1210,15};
printf("%d",a[33] );
出力
1073828132
a[33]配列要素が存在しないのに、印刷しようとしているときにエラーがスローされないのはなぜですか
C は境界チェックを行わないためです。
コール スタック内の任意の場所を読み取るだけです。
C の配列は、ポインタの周りの一種の構文糖衣です。
int a[2]2 つの int の配列用のスペースを作成し、初期化します。
しかしa[33]、実際*(a + 33)には、 の最初の要素を指すaだけです。配列を逆参照するとき、C は配列が初期化されたサイズを気にしません。int *a