c - 什么是 C 中的指定初始化程序?

标签 c struct unions initializer designated-initializer

我有一项作业要求我了解什么是 C 中的指定初始化器,以及用指定初始化器初始化变量的含义。

我不熟悉这个术语,也找不到任何结论性的定义。

什么是 C 中的指定初始化程序?

最佳答案

指定的初始化器有两种形式:

1) 它提供了一种快速初始化数组中特定元素的方法:

int foo[10] = { [3] = 1, [5] = 2 };

会将所有 foo 的元素设置为 0,除了索引 3 将设置为 1 和索引 5 将设置为 2。

2) 它提供了一种显式初始化struct 成员的方法。例如,对于

struct Foo { int a, b; };

你可以写

struct Foo foo { .a = 1, .b = 2 };

请注意,在这种情况下,未显式初始化的成员将被初始化,就好像该实例具有 static 持续时间一样。


两者都是标准 C,但请注意,C++ 两者都不支持(因为构造函数可以用该语言完成这项工作。)

关于c - 什么是 C 中的指定初始化程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47202557/

相关文章:

c - 在这种情况下如何正确地将指针分配给结构变量?

python - 为什么类型提示 `float` 接受 `int` 而它甚至不是子类?

c - 双自动舍入

c - C 中 z^2 = x^2 + y^2 的解决方案。代码适用于小数字,但适用于较大数字的段错误

c - 段错误,while 循环中的 fgets

c - 为什么静态指针的初始化无效?

c - C中哈希表插入函数的问题

c++ - 使 C++ 类继承自 C 结构,推荐吗?

c - 重用命名结构作为嵌套结构会触发 GCC 中的重新定义错误

c++ - 这是使用 union vs reinterpret_cast 的合适案例吗