gpt4 book ai didi

c - 在不定义所有字段的情况下初始化嵌套结构

转载 作者:行者123 更新时间:2023-12-04 11:54:32 24 4
gpt4 key购买 nike

我有一组结构,定义如下:

typedef struct
{
int index;
int array[10];
}
Item;

typedef struct
{
Item A;
Item B;
Item C;
}
Collection;

我想声明一个 Collection 类型的变量,如下所示:

Collection collection =
{
{ 1, 0 }, /* item A */
{ 2, 0 }, /* item B */
{ 3, 0 } /* item C */
};

这是否会将三个 index 变量设置为 1、2 和 3,同时将所有三个 array[] 变量初始化为零?

它似乎适用于我的编译器,但我想知道这是否是标准行为。

最佳答案

零周围应该有额外的大括号,使它们成为有效的数组初始值设定项:

Collection collection =
{
{ 1, {0} }, /* item A */
{ 2, {0} }, /* item B */
{ 3, {0} } /* item C */
};

除此之外,它将正确地初始化结构。

在没有额外大括号的情况下,初始化器也是有效的,但是您会收到编译器警告,并且如果子聚合的初始化器是显式的,则不会造成混淆。有关详细信息,请参阅他的答案中不恰本地引用的C99标准中的第6.7.8节,尤其是6.7.8(20)和6.7.8(29)中的示例。

关于c - 在不定义所有字段的情况下初始化嵌套结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2164905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com