0

简单的一行代码停止编译,有什么问题?

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 chars 数组的数组的指针,那么这个:

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

当你声明一个二维数组时,可以把它简单地想象成一个指向其他数组的指针数组。因此,要执行您的要求:

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