在C中初始化char数组

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存储持续时间的对象相同.

  • 有一会儿,当你用标准的引用(几秒钟内)发布答案时,我被暂停了.你做得多快:OI仍然感到惊讶 (3认同)
  • @haccks你回答几个这样的问题,很快[N1570](http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf)是你浏览器中的第一件事 - 当你点击"n"时...... (3认同)

Gop*_*opi 6

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

char buf[5] = {0};

char buf[5] = "";
Run Code Online (Sandbox Code Playgroud)

两者都是一样的