偶然地,我发现该行char s[] = {"Hello World"};
已经正确编译,似乎被视为相同char s[] = "Hello World";
.第一个({"Hello World"}
)不是包含一个char数组的元素的数组,所以s的声明应该读取char *s[]
吗?事实上,如果我将其更改为char *s[] = {"Hello World"};
编译器,也会按预期接受它.
寻找答案,我找到的唯一提到这个的地方是这个,但没有引用标准.
所以我的问题是,char s[] = {"Hello World"};
尽管左侧是类型array of char
而右侧是类型,为什么要编译该行array of array of char
?
以下是一个工作计划:
#include<stdio.h>
int main() {
char s[] = {"Hello World"};
printf("%s", s); // Same output if line above is char s[] = "Hello World";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的任何澄清.
PS我的编译器是gcc-4.3.4.