在C中对struct数组进行部分初始化时会发生什么?
这段代码是什么意思?
struct foo_t { int a; int b; } foo[10] = {{0,0}}
foo [0]是{0,0}
,但其余的呢? C标准如何处理这个问题?
添加。 我在这里找到了一个详尽的答案。 我想我的问题应该删除。
整个数组将使用结构进行初始化, a
和b
的值均为0。 这与具有原始值的以下情况类似:
int foo[10] = {0};
其中数组中的每个整数都将使用值0
进行初始化。
C99标准规定如下:
如果括号括起的列表中的初始值设定项少于聚合的元素或成员,或者用于初始化已知大小的数组的字符串文字中的字符数少于数组中的元素,则聚合的其余部分应为隐式初始化与具有静态存储持续时间的对象相同。
值0通常表示列表的结尾。 我的意思是,当你迭代这样一个列表并且遇到这个价值玩具时,知道你已经到了最后。 我想,无论是谁在他的脑海里创造了这样的广告。 如果搜索代码,您可能会发现在列表中附加值后设置零值的代码片段。