什么是c中的指定初始值设定项?

我知道这可能是一个基本问题。

我有一个任务,要求我理解c中的指定初始化器是什么以及用一个初始化变量意味着什么。 我对这个术语不熟悉,也找不到任何结论性的定义。

我一直在寻找不同地方的答案,但找不到任何答案。 谢谢您的帮助!

指定的初始化程序有两种forms:

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 ++也不支持(因为构造函数可以使用该语言完成工作。)