简单的一行代码停止编译,有什么问题?
char *words[256] = new char[numOfWords][256];
array must be initialized with a brace-enclosed initializer
您声明了一个包含 256 个指针的数组,指向char
. 错误消息很清楚 - 数组需要使用大括号括起来的初始化程序进行初始化。因此,如果您想保留您的声明,请执行以下操作:
char* words[256] = { new char[wordlength], ... };
// ^^^ this is effectively your numOfWords
或者,您可以完全省略初始化并稍后分配单个元素,例如在循环中。请注意,如果您动态分配元素,您也有责任正确删除它们。
如果你想要一个指向 256 char
s 数组的数组的指针,那么这个:
char (*words)[256] = new char[numOfWords][256];
当你声明一个二维数组时,可以把它简单地想象成一个指向其他数组的指针数组。因此,要执行您的要求:
char *words[] = new char*[256];
for (int i = 0; i < 256; ++i) {
words[i] = new char[numOfWords];
}