简单的一行阻止代码编译,出了什么问题?
char *words[256] = new char[numOfWords][256];
array must be initialized with a brace-enclosed initializer
答案 0 :(得分:3)
您声明了一个包含指向char
的256个指针的数组。错误消息是明确的 - 数组需要使用括号括起的初始化程序进行初始化。因此,如果您想保留声明,请执行以下操作:
char* words[256] = { new char[wordlength], ... };
// ^^^ this is effectively your numOfWords
或者,您可以完全省略初始化并稍后分配单个元素,比如循环。请注意,如果您动态分配元素,则还要负责正确删除它们。
如果你想要一个指向256 char
s的数组数组的指针,那么这个:
char (*words)[256] = new char[numOfWords][256];
答案 1 :(得分:0)
声明2D数组时,请将其视为指向其他数组的指针数组。因此,做你要问的事情:
char *words[] = new char*[256];
for (int i = 0; i < 256; ++i) {
words[i] = new char[numOfWords];
}