0

私はこのコードで1から100までの数字で配列を埋めようとしています:

#include <stdio.h>

int main()
{
    int num[100];
    int i = 0;

    for (i = 0; i < 100; i++)
    {
        int num[i] = i+1;
    }
}

しかし、私はこのエラーが発生しています:

c:18:13: error: variable-sized object may not be initialized

私はまだプログラミングに比較的慣れていないので、これが何を意味するのかわかりません。教えて頂けますか?

4

3 に答える 3

4

これを交換

 int num[i] = i+1;

このため:

 num[i] = i+1;

あなたはすでに上で配列を宣言していますint num[100];

最初に配列を宣言してから、ループ内で反復処理します。

あなたは初心者なので、私のおすすめのテーマについての良い本を読むことから始めるのが望ましいです。

于 2012-11-25T00:34:35.293 に答える
2

問題はintインint num[i] = i+1です。コンパイラは、要素 (可変サイズのオブジェクト部分)を含む新しい配列 ( とも呼ばれるnum)を宣言しようとしていると見なします。その行から を削除するだけです。iint

于 2012-11-25T00:34:33.173 に答える
0

ループ内で配列を再度宣言しています。

int num[i] = i+1;

とにかく、これはコードのエラーですが、コンパイラの問題はありません。配列の初期化を伴う有効な宣言ではないため、エラーが発生します。コードを書くだけならint num[i];、それは有効なコードであり、エラーなしでコンパイルされます (まあ、C99 からのみ、古い C89 は可変長配列をサポートしていません)。これは、コンパイラが認識し、報告しようとするものです。

于 2012-11-25T00:40:57.720 に答える