我是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 };