int Table[];
試したテーブルの動的サイズでプログラムをコンパイルしたい
コンパイラはこのメッセージを返します4C:\ Documents and Settings \ Administrator \ Mes document \ TD4.c `table'のストレージサイズは不明ですか?ストレージがわかりませんか?私のせいは何ですか
int Table[];
試したテーブルの動的サイズでプログラムをコンパイルしたい
コンパイラはこのメッセージを返します4C:\ Documents and Settings \ Administrator \ Mes document \ TD4.c `table'のストレージサイズは不明ですか?ストレージがわかりませんか?私のせいは何ですか
Cでは、サイズが不明な配列を宣言することはできません。
int Table[];
単に許可されていません。
代わりに、ポインタを宣言できます。
int *Table;
そして、 malloc/realloc関数を使用して動的に割り当て/再割り当てします。
テーブルを作成するときは、初期サイズを宣言する必要がありますint table[SIZE];
。コンパイル時にテーブルのサイズがわからない場合(たとえば、ユーザーからデータを読み取る場合)、常に異なる方法でメモリを割り当てることができます(サイズは変数であり、定数ではありません)。
int* table = (int*)malloc(sizeof(int)*size));
malloc
動的なテーブル/配列を作成する場合は、Cで関数を使用しnew
、C++で演算子を使用して作成できます。free
CまたはC++のどちらをdelete
使用するかによって、メモリの割り当てを解除する必要があります。
この方法で配列を動的に定義することはできません。ストレージサイズを指定する必要があります。
int Table[43];
別の方法は、mallocを使用することです。
int *Table = malloc (sizeof (int) * N);
int i;
for (i = 0; i < N; i++)
Table[i] = i;
ここで、Nは何らかの手段で渡されます。free()
後でアレイで使用することを忘れないでください。