在c中初始化数组的格式为`int a [3] = {0,};`

时间:2016-07-20 03:38:08

标签: c linux systems-programming

我在int arr[3] ={0,};看到了数组初始化的来源是什么意思?我通常使用这种格式int arr[3]={0};我可以知道有什么区别

1 个答案:

答案 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用于初始化已知大小的数组   是数组中的元素,聚合的其余部分应为   隐式初始化与具有静态存储的对象相同   持续时间。