1. ホーム
  2. C

コンパイルエラー:可変長オブジェクトが初期化されていない可能性があります。

2022-02-20 23:44:38

理由 配列を定義する際に、配列の長さを定義するために変数を使用します。

次のようなコードです。

int a = 10;

char b[a]; //エラーなしでコンパイルします。

//char b[a] = "jfkd" //珍しく、変数を使って長さを定義する場合、定義と同時に代入を初期化できないので、後で初期化する必要があります。

printf("b = %s, len = %d:%dn", b, strlen(b), sizeof(b));

以下のコードで問題ありません。

int a = 10;

char b[a]; //エラーなしでコンパイルします。

strcpy(b, "jfdljf") とします。

printf("b = %s, len = %d:%dn", b, strlen(b), sizeof(b));

理由:C言語において、配列の長さを定義するために変数を使用することは、この配列が定義されても初期化および代入が同時に行われず、後で代入する必要があるということです。