int array [30] = {0}; 这在c中是如何工作的?

Md *_*yon 4 c arrays initialization

这是如何工作的(将所有值设置为0)?

int array[28]= {0};
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用(不将所有值设置为4,但只将第一个值设置为4,其他值设置为0)?

int array[28]= {4};
Run Code Online (Sandbox Code Playgroud)

nos*_*nos 10

在C中,初始化程序中未列出的任何元素都被隐式初始化为零值.

int array[28]= {0}; 创建一个28个整数的数组,并将第一个元素初始化为0.初始化程序中没有提到剩余的元素得到它们的零值,对于整数是0.

int array[28]= {4};同样的工作.第一个元素初始化为4,初始化程序中未提及的其余元素获得零值.


Rah*_*thi 10

未初始化的元素设置为0.在第一种情况下,通过将值设置为0来启动它,并且默认情况下将rest初始化为0.在第二种情况下,第一个值初始化为4,其余为0.标准说:

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