Ren*_*Ren 16 c arrays initialization
我不确定在初始化后以下列方式在char数组中会出现什么:
char buf[5]={0,};
Run Code Online (Sandbox Code Playgroud)
这相当于
char buf[5]={0,0,0,0,0};
Run Code Online (Sandbox Code Playgroud)
Sou*_*osh 26
是的,它是一样的.如果初始化程序的数量少于数组中的元素,则剩余的元素将被初始化,就像具有静态存储持续时间的对象(即with 0)一样.
所以,
char buf[5]={0,};
Run Code Online (Sandbox Code Playgroud)
相当于
char buf[5]={0,0,0,0,0};
Run Code Online (Sandbox Code Playgroud)
相关阅读:从C11标准文件,第6.7.9章,初始化,
如果括号括起的列表中的初始值设定项少于聚合的元素或成员,或者用于初始化已知大小的数组的字符串文字中的字符数少于数组中的元素,则聚合的其余部分应为隐式初始化与具有
static存储持续时间的对象相同.
当您将数组中0的一个元素初始化为其余元素时设置为是0
char buf[5] = {0};
char buf[5] = "";
Run Code Online (Sandbox Code Playgroud)
两者都是一样的