在C中初始化char数组

时间:2015-05-04 14:15:57

标签: c arrays initialization

我不确定在初始化后以下列方式在char数组中会出现什么:

char buf[5]={0,};

这相当于

char buf[5]={0,0,0,0,0};

4 个答案:

答案 0 :(得分:26)

是的,它是一样的。如果初始值设定项的数量少于数组中的元素,则剩余的元素将被初始化,就像具有静态存储持续时间的对象一样(即,使用0)。

所以,

char buf[5]={0,};

相当于

 char buf[5]={0,0,0,0,0};

相关阅读:从C11标准文件,第6.7.9章,初始化,

  

如果括号括起的列表中的初始值设定项少于聚合的元素或成员,或者用于初始化已知大小的数组的字符串文字中的字符数少于数组中的元素,则剩余的聚合应隐式初始化,与具有static存储持续时间的对象相同。

答案 1 :(得分:6)

是的,当您将数组中的一个元素初始化为0时,其余元素设置为0

char buf[5] = {0};

char buf[5] = "";

两者都相同

答案 2 :(得分:4)

是。

char buf[5]={0,}; // Rest will be initialized to 0 by default

相当于

char buf[5]={0,0,0,0,0};   

如果初始化程序短于数组长度,则该数组的其余元素将隐式赋值0

您还应该注意{0,}(尾随逗号使数组更容易修改)等同于{0}作为初始化列表。

答案 3 :(得分:2)

是的,两者的结果相同。

关于更多讨论here,以及可能重复的问题here,相关问题很少。