相关疑难解决方法(0)

char数组声明中字符串文字周围的大括号有效吗?(例如char s [] = {"Hello World"})

偶然地,我发现该行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.

c c++ arrays string array-initialization

50
推荐指数
2
解决办法
5793
查看次数

标签 统计

array-initialization ×1

arrays ×1

c ×1

c++ ×1

string ×1