2-D阵列未正确初始化

时间:2012-10-15 21:53:45

标签: c++ arrays

简单的一行阻止代码编译,出了什么问题?

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

array must be initialized with a brace-enclosed initializer

2 个答案:

答案 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];
}