我不确定在初始化后以下列方式在char数组中会出现什么:
char buf[5]={0,};
这相当于
char buf[5]={0,0,0,0,0};
答案 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)