2017-10-31 6 views
-5

私はこの割り当て宣言{0}はC++で配列を代入しますか?具体的には、

int arr[n][n]={0}; 

を使用すると、0の完全なn×nの行列を与えることを読んで、私はそれを実行したときに、それは彼らが偶数アドレスのように見えるいくつかのケースでは、特定の場所に0を、与えるものではありませんarr [n] [n]とarr [n] [1]の終わり近くにあり、他のすべては0に割り当てられています。この配列を満たすためにforループを使用しても、この問題は発生しません。

編集:Nこの場合{number}は最初の要素のみに影響し、残りの部分を残すように、任意の正の整数> = 2

はそうです。次のステートメントは、すべての要素を0に設定しています。質問に実際に答えるコメントの人に感謝します。

int arr[n][n]={}; 
+3

「n」要素の配列の有効なインデックスは何ですか?配列インデックスは*ゼロベース*であることを忘れないでください。 –

+1

nの定義を表示します。 – ZDF

+0

forループの代わりに 'memset'を使うことができます。実際には 'std :: vector'を使うことができます。しかし、私はあなたが配列を使用する理由があると思います。 ;-) – DevSolar

答えて

1

具体端近くarr[n][n]arr[n][1]

arr[n][n]arr[n][1]両方未定義の動作にこれらのインデックスの結果を使用して、無効なアクセスです。

有効なインデックスの範囲は[0、n-1]です。最後の要素はarr[n - 1][n - 1]です。

+0

'arr [n] [n]'、 'arr [n] [1]'に問題なくアクセスできます。 – user136128

+0

@ user136128いいえ、できません。あなたはすでに、あなたがあなたの質問で観察した問題を文書化しました。 –

+0

@ user136128「缶」には2種類あります。何かをすることができるか、何かをすることを許可されるかもしれません。あなたはこれをすることができません。現実の世界のように、赤軍に捕らえられていないということは、あなたが何か悪いことをしていないことを意味するものではありません。 – molbdnilo

関連する問題