みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C/C++の配列について

配列の作り方について
nは特定の数でarr[3]以降の値をfor文で代入したいのですが
同じfor文で値を代入すると(1)は不正解で(2)が正解になります
小さい数だと見た目は同じで何が違うのか解らないのですが、これは何がちがうのでしょうか?
(1)の0, 0, 1以降は全て初期値として0が入ると認識してたのですがそれも違いますか?

(1)
int arr[n]={0, 0, 1};
(2)
int arr[n];
arr[0]=0;
arr[1]=0;
arr[2]=1;

for (int i=3; i<n; i++) {
arr[i]=略
}

よろしくお願いします

投稿日時 - 2019-04-30 12:36:32

QNo.9612035

困ってます

質問者が選んだベストアンサー

プログラム全体を見ないと確かなことは言えませんが、動作はおそらく同じです。

何かの問題であれば、題意という物があるので、題意に沿ってないと間違いになります。

投稿日時 - 2019-04-30 13:32:53

お礼

回答ありがとうございました。
機械で判定しているのですが関係有るのですかね
もう一度確認してみます

投稿日時 - 2019-04-30 14:16:36

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

配列を宣言する場合、(1)の場合、nは無視され、{0, 0, 1}の要素数3が参照され、配列は3要素であると宣言していることになると思います。iが3より大きい場合arrは割り当てられていない領域なので、エラーになると思います。
C言語の場合、int arr[]={0, 0, 1};と書くと自動的にarrの要素数は3になりその要素数は以後変更できません。これを自由に変更できるようにしたものがC++です。(2)のint arr[n];で要素数nを宣言しているので、n個の要素が入る領域が用意され、その後のFor文で値を代入することができます。

投稿日時 - 2019-05-02 17:15:32

お礼

ありがとうございました

投稿日時 - 2019-05-04 16:29:56

ANo.2

>(1)は不正解で(2)が正解
(1)は、何かエラーメッセージが出たんですか?

投稿日時 - 2019-05-01 01:30:34

お礼

ありがとうございました

投稿日時 - 2019-05-04 16:30:21

あなたにオススメの質問