【发布时间】:2014-04-11 12:52:27
【问题描述】:
我想知道如何以这种方式声明 char 数组:
char szArray[]={"one"};
char szArrayTwo[][6]={{"one"},{"two"},{"three"}};
但是这种方式行不通
char szArrayTwo[][]={{"one"},{"two"},{"three"}};
注意:
我知道 c++ 标记,即使它应该是 c,但它在 c++ 上下文中与 c++ 编译器一起使用
【问题讨论】:
-
编译器用您收到的错误回答了您的问题。在 C++ 和 C 中,在提供初始值设定项列表时,必须指定 all 但多维数组的最高维度。你的第二个 sn-p 没有这样做。与此相关的是,如果你想做你正在尝试的事情(一个常量字符串数组),你可以使用简单的
const char *szArray[] = { "one", "two", "three" };来实现,即const char*的简单数组。但请注意,这种定义中的字符串是不可写的。 -
我刚刚查看了生成的错误消息,它们对我来说似乎并不那么“明显”:-missing subscript -array bounds overflow。当然不能写了
-
你的第一个数组和它们的元素都是可写的。我发布的那个数组是可写的(它只是一个指针数组),但其中的字符串是只读文字。缺少的下标消息是我提到的那个。我也希望错误消息更详细(谁没有?),但下标是您的代码有效和无效代码之间的唯一区别是一个非常强大的指标。
标签: c++ arrays visual-studio-2010 c++11 multidimensional-array