我想知道如何以这种方式声明char数组:
char szArray[]={"one"};
char szArrayTwo[][6]={{"one"},{"two"},{"three"}};
但这种方式不起作用
char szArrayTwo[][]={{"one"},{"two"},{"three"}};
注意:
我知道c ++标签,即使它应该是c,但它正在c ++上下文中使用c ++编译器
答案 0 :(得分:2)
实际上,可以对用作初始化器的常量表达式进行处理。但在这种情况下,例如对于字符数组,编译器必须计算字符串文字的最大长度。如果一个数组是多维的,那就更难了。 如果在运行时计算初始化程序,则任务将更复杂。实际上,编译器无法生成适当的代码。
答案 1 :(得分:1)
在c ++中,包含2维或更多维的数组,必须始终定义最右边的维度。
答案 2 :(得分:0)
string ArrayOne[] { "one","two","three" };
会起作用,
也会如此char* ArrayTwo[] { "one","two","three" };
但真正的多维数组必须至多有一个未定义的维度大小(最左边的)