在阅读这个问题时,我想测试GCC中的输入,看看会输出什么错误.令我惊讶的是以下一行:
char array[] = {"s"};
Run Code Online (Sandbox Code Playgroud)
编译时没有错误或警告,导致包含大小为2的数组"s\0".我原本期望编译器错误,因为表达式的右侧是类型char*[].
在这种情况下,数组初始化只有一个元素不被视为数组,为什么?
char array[] = {"s"};
Run Code Online (Sandbox Code Playgroud)
与:
char array[] = "s";
Run Code Online (Sandbox Code Playgroud)
{ }在这种情况下,这是可选的,因为"s"是字符串文字.
要么,
char array[] = {'s', '\0'};
Run Code Online (Sandbox Code Playgroud)
在这种情况下,{ }需要初始化数组.