0

コードのコンパイルを停止する単純な 1 行、何が問題なのですか?

char *words[256] = new char[numOfWords][256];

array must be initialized with a brace-enclosed initializer
4

2 に答える 2

3

への 256 個のポインターの配列を宣言しましたchar。エラー メッセージは明確です。配列は、中かっこで囲まれた初期化子で初期化する必要があります。したがって、宣言を保持したい場合は、次のようにします。

char* words[256] = { new char[wordlength], ... };
       //   ^^^ this is effectively your numOfWords

または、初期化を完全に省略して、個々の要素を後でループなどで割り当てることもできます。要素を動的に割り当てる場合は、それらを適切に削除する責任もあることに注意してください。

256 個の配列の配列へのポインターが必要な場合はchar、次のようにします。

char (*words)[256] = new char[numOfWords][256];
于 2012-10-15T21:59:35.203 に答える
0

2D 配列を宣言するときは、それを単に他の配列へのポインターの配列と考えてください。したがって、あなたが求めていることを行うには:

char *words[] = new char*[256];
for (int i = 0; i < 256; ++i) {
    words[i] = new char[numOfWords];
}
于 2012-10-15T22:01:46.200 に答える