6

这段代码是什么意思?

struct foo_t {
    int a;
    int b;
} foo[10] = {{0,0}}

foo[0] 是{0,0},但其余的呢?C标准如何处理这个?

添加。我在这里建立了一个详尽的答案。我认为我的问题应该被删除。

4

2 回答 2

9

整个数组将使用 和 的值为 0 的结构进行a初始化b。这类似于以下具有原始值的情况:

int foo[10] = {0};

数组中的每个整数都将使用 value 进行初始化0

C99 标准规定了以下内容:

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

于 2012-10-27T22:22:37.490 回答
2

值 0 通常意味着列表的结尾。我的意思是当你迭代这样一个列表并遇到这个值时,玩具知道你已经到了尽头。我想制作这个广告的人在他的脑海中会出现这样的情况。如果您搜索代码,您可能会发现在列表中附加一个值后设置零值的代码片段。

于 2012-10-27T17:13:49.530 回答