偶然我发现该行char s[] = {"Hello World"};
已正确编译并且似乎与char s[] = "Hello World";
. 第一个 ( {"Hello World"}
) 不是一个包含一个元素的数组,它是一个 char 数组,所以 s 的声明应该是 schar *s[]
吗?实际上,如果我将其更改为char *s[] = {"Hello World"};
编译器,也会像预期的那样接受它。
寻找答案,我发现唯一提到这个的地方就是这个,但没有引用标准。
所以我的问题是,char s[] = {"Hello World"};
尽管左侧是 typearray of char
而右侧是type ,但为什么要编译该行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;
}
感谢您的任何澄清。
PS 我的编译器是 gcc-4.3.4。