-1

int Table[]; 試したテーブルの動的サイズでプログラムをコンパイルしたい

コンパイラはこのメッセージを返します4C:\ Documents and Settings \ Administrator \ Mes document \ TD4.c `table'のストレージサイズは不明ですか?ストレージがわかりませんか?私のせいは何ですか

4

4 に答える 4

4

Cでは、サイズが不明な配列を宣言することはできません。

int Table[];

単に許可されていません。

代わりに、ポインタを宣言できます。

int *Table;

そして、 malloc/realloc関数を使用して動的に割り当て/再割り当てします。

于 2012-12-27T19:34:01.503 に答える
1

テーブルを作成するときは、初期サイズを宣言する必要がありますint table[SIZE];。コンパイル時にテーブルのサイズがわからない場合(たとえば、ユーザーからデータを読み取る場合)、常に異なる方法でメモリを割り当てることができます(サイズは変数であり、定数ではありません)。

int* table = (int*)malloc(sizeof(int)*size));

于 2012-12-27T19:34:51.157 に答える
1

malloc動的なテーブル/配列を作成する場合は、Cで関数を使用しnew、C++で演算子を使用して作成できます。freeCまたはC++のどちらをdelete使用するかによって、メモリの割り当てを解除する必要があります。

于 2012-12-27T19:35:22.363 に答える
1

この方法で配列を動的に定義することはできません。ストレージサイズを指定する必要があります。

    int Table[43]; 

別の方法は、mallocを使用することです。

    int *Table = malloc (sizeof (int) * N);
    int i;

    for (i = 0; i < N; i++)
        Table[i] = i;

ここで、Nは何らかの手段で渡されます。free()後でアレイで使用することを忘れないでください。

于 2012-12-27T19:38:25.247 に答える