c - 在大括号和没有大括号的列表中声明的值有什么区别

标签 c initialization string-literals list-initialization

我是 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 开始:

An array of character type may be initialized by a character string literal or UTF−8 string literal, optionally enclosed in braces.

关于c - 在大括号和没有大括号的列表中声明的值有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68015444/

相关文章:

c - 如何使用 C 从下往上读取行?

c - 过程 : Regarding proc Executable size difference

javascript - 当我们在 JavaScript 中将字符串变量初始化为 null 或空字符串时,有什么区别?哪个是首选

静态 c 函数可以返回本地 char 数组吗?

c++ - 是否可以在原始字符串文字中插入转义序列?

c - 《C 语言编程》第 6 章练习 #5, "simple “printing” 计算器”

c - 在eof之后从文件输入到C中的数组

ios - 检查 UICollectionViewCell 是否已创建以避免重用

java - 使用类中的方法初始化实例变量

c++ - 在编译时计算 C 字符串的长度。这真的是一个 constexpr 吗?