在内存中表示的未定义向量元素是什么?

zev*_*val 3 c arrays assembly initialization

我目前正在学习 C,我有一个问题,我必须猜测内存中的值。例如long var1[1243] = {10, 1, 0, -1, -10},当我说并定义这个向量时,它的前 5 个元素已经定义,但是代表剩余 1238 个元素的分配字节,它们在内存中设置为什么?更具体地说,它们是0吗?在定义它们之后,在汇编中会说.zero <number of remaining bytes in vector>正确吗?

Fir*_*cer 5

通过至少初始化一些元素,{10}C 将像全局变量一样初始化数组中的所有剩余元素。数字零或空指针取决于类型,在结构数组的情况下,结构的所有成员,递归。

在 C++ 中,空初始值设定项也有效long var1[1243] = {},但在 C 中是不允许的。

  • 看起来 GCC 默认允许 `= {}`,“警告:ISO C 禁止空初始化大括号 [-Wpedantic]” (2认同)