長さNの配列を宣言しました。ここでは、ループを使用してこの配列の要素にいくつかの値を割り当てます(ループ変数は配列のインデックスとして使用されます)。次のようにコードは次のとおりです。配列インデックス変数がC、C++で0にリセットされます
int main()
{
int arr[4], j;
for(j=0; j<10; j++)
{
printf("%d\n", j);
arr[j] = 0;
sleep(1);
printf("%d\n\n", j);
}
return 0;
}
私は0 1 2 ... 9ように出力を期待しかし、何が実際に起こったことはjが0にリセットされてしまったということであったとき、[N + 2] = 0(ARRの[ARR割り当て6] = 0、この場合)が実行されました。 ここで実際に何が起こっていますか?何か不足していますか?
ここでストンプするのはどういう意味ですか? – nitzs
今すぐ入手します。ありがとう。 – nitzs
私は答えを更新しました。基本的にarr [N]は、配列の先頭へのポインタにNを追加し、メモリの参照を解除するのと同じことです。 arrの長さが小さいかどうかは気にしません。これはチェックするまでです。範囲外の配列要素に割り当てるとすぐに、メモリ上でストンプしています。すべてのベットはオフになっています。プログラムがクラッシュしたり、ミサイルを発射したり、jをリセットしたり、放射能レベルを上げたり、遠心分離機を制御から外したりする可能性があります。 –