我从网上得到了以下代码:
struct {
int x;
struct {
int y, z;
} nested;
} i = { .nested.y = 5, 6, .x = 1, 2 };
结果是:
i.nested.y = 2
i.nested.z = 6
但是不知道为什么,网上的文章没有给出任何解释。
最佳答案
非指定初始化器总是对结构中的下一个元素进行操作。所以最新的 2
对 .x
之后的内容进行操作,即 .nested.y
。同样,6
用于 nested.z
。
如果一个初始值设定项对一个元素有多个值,则列表中的最后一个值将获胜。
但是如果你的编译器实现了指定的初始化器,就没有理由不使用它们。您给出的示例非常牵强,没有太大的教育值(value)。
关于C结构初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17464822/