前提・実現したいこと
C言語で配列を初期化する際に、int型の変数を要素数として使用するとエラーが出ます。
要素数を変数ではなく変数に格納されているものと同じ数字に変更するとエラーが出ません。
何故変数を使用するとエラーが出るのでしょうか?
発生している問題・エラーメッセージ
test.c: 関数 ‘main’ 内:
test.c:6:5: エラー: 可変長オブジェクトが初期化されないようです
int array[num] = { 1,2,3,4,5,6,7,8,9,10 };
^
test.c:6:5: 警告: 配列初期化子内の要素が多すぎます [デフォルトで有効]
test.c:6:5: 警告: (‘array’ 用の初期化付近) [デフォルトで有効]
test.c:6:5: 警告: 配列初期化子内の要素が多すぎます [デフォルトで有効]
test.c:6:5: 警告: (‘array’ 用の初期化付近) [デフォルトで有効]
test.c:6:5: 警告: 配列初期化子内の要素が多すぎます [デフォルトで有効]
test.c:6:5: 警告: (‘array’ 用の初期化付近) [デフォルトで有効]
test.c:6:5: 警告: 配列初期化子内の要素が多すぎます [デフォルトで有効]
test.c:6:5: 警告: (‘array’ 用の初期化付近) [デフォルトで有効]
test.c:6:5: 警告: 配列初期化子内の要素が多すぎます [デフォルトで有効]
test.c:6:5: 警告: (‘array’ 用の初期化付近) [デフォルトで有効]
test.c:6:5: 警告: 配列初期化子内の要素が多すぎます [デフォルトで有効]
test.c:6:5: 警告: (‘array’ 用の初期化付近) [デフォルトで有効]
test.c:6:5: 警告: 配列初期化子内の要素が多すぎます [デフォルトで有効]
test.c:6:5: 警告: (‘array’ 用の初期化付近) [デフォルトで有効]
test.c:6:5: 警告: 配列初期化子内の要素が多すぎます [デフォルトで有効]
test.c:6:5: 警告: (‘array’ 用の初期化付近) [デフォルトで有効]
test.c:6:5: 警告: 配列初期化子内の要素が多すぎます [デフォルトで有効]
test.c:6:5: 警告: (‘array’ 用の初期化付近) [デフォルトで有効]
test.c:6:5: 警告: 配列初期化子内の要素が多すぎます [デフォルトで有効]
test.c:6:5: 警告: (‘array’ 用の初期化付近) [デフォルトで有効]
該当のソースコード
//エラーが出るコード
include <stdio.h>
main()
{
int num = 10;
int array[num] = { 1,2,3,4,5,6,7,8,9,10 };
}
//エラーが出ないコード
main()
{
int num = 10;
int array[10] = { 1,2,3,4,5,6,7,8,9,10 };
}
回答2件
あなたの回答
tips
プレビュー