C结构初始化

标签 c structure

我从网上得到了以下代码:

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/

相关文章:

c - 如何快速用值填充结构?

c - c中结构体中的数组

c - 纯C如何统计字数、字符数、行数

c - 我们是否总是需要在 malloc/realloc 之后检查指针是否为空?

c - 在 pthread 库中禁用 c 断言

c - 通过嵌套结构访问指针

c - Malloc 在递归函数中崩溃

c - C 编译器如何为位域定义的结构分配结构内存?

c++ - 结构初始化作为参数

c# - C SDK转C#时出现非法参数