为什么我无法使用以下内容初始化char** c
c = new (char*)[10];
,while:
c = new char*[10];
好吗?
答案 0 :(得分:4)
这有点奇怪。 new-statement有两种格式,
new (optional_parameters) ( type ) optional_initializer
或
new (optional_parameters) type optional_initializer
new (char*)[10]
的尝试不适合第一种形式,即使(char*)
看起来像(type)
,因为[10]
不是有效的初始值设定项。
您的其他尝试确实符合第二种格式type
为char*[10]
且两个可选部分都缺失。
答案 1 :(得分:1)
由于超出了本答案范围的原因,该语言的设计者决定:
new (char*)[10]
不是语法上有效的表达式。由于这不是语法上有效的表达式,因此使用
初始化char** c
没有意义
c = new (char*)[10];
答案 2 :(得分:0)
用于new
表达式的类型与变量声明的工作方式类似,但删除了变量名称。要声明一个包含10个字符指针的数组,请使用
char *p[10];
不
(char *) p[10];
同样,要动态分配10个字符指针的数组,请使用
new char *[10]
不
new (char *)[10]