我在int arr[3] ={0,};
看到了数组初始化的来源是什么意思?我通常使用这种格式int arr[3]={0};
我可以知道有什么区别
答案 0 :(得分:5)
这可能是dup,但无论如何我都会拍摄。
int arr[3] ={0,};
和int arr[3] ={0};
之间没有区别。
参考:C11 6.7.9:
initializer:
assignment-expression
{ initializer-list }
{ initializer-list , }
两种形式的初始化列表都被视为初始值设定项。最后使用逗号的表单是很多人喜欢的,因为它可以在代码维护期间更轻松地重新排列或添加元素到列表中。
int arr[3] ={0,};
声明一个包含三个元素的数组,并将第一个元素初始化为0.当您进行部分初始化时,数组的其余部分将自动使用零初始化。
参考。 C11 6.7.9:
如果括号括起的列表中的初始值设定项少于此值 是聚合的元素或成员,或者是一个或多个字符 string literal用于初始化已知大小的数组 是数组中的元素,聚合的其余部分应为 隐式初始化与具有静态存储的对象相同 持续时间。