c-在一个由花括号和无花括号包围的列表中声明的值有什么区别



我是C编程的初学者,我不知道这两个表达式(有花括号和没有花括号(之间有什么区别,如下所示。

char s1[] = {"The course of true love never did run smooth"};
char s1[] = "The course of true love never did run smooth";

我尝试使用进行测试

printf("%c", s1[0]), and 
printf("%s", s1) 

两人都给了我相同的答案。

没有区别,大括号是可选的。

来自标准6.7.9/14:

字符类型的数组可以由字符串文字或UTF−8字符串文字初始化,也可以用大括号括起来。

事实上,当字符数组由字符串文字初始化时,例如

char s[] = "Hello";

那么这样的初始化就相当于下面的

char s[] = { 'H', 'e', 'l', 'l', 'o', '' };

这是一个初始值设定项列表中字符串文字的元素。

所以你可以初始化一个像这样的数组

char s[] = "Hello";

或类似

char s[] = { "Hello" };

以显示文字的元素形成初始值设定项列表。

还要注意,您可以初始化标量对象,例如

int x = 10;

int x = { 10 };

相关内容

  • 没有找到相关文章

最新更新