gpt4 book ai didi

c - 为结构元素数组初始化 C 结构中的一个成员

转载 作者:太空宇宙 更新时间:2023-11-04 02:25:56 25 4
gpt4 key购买 nike

我有以下代码用于初始化成员 b。这应该发生在所有 MAX_SIZE 结构上。

enum { MAX_SIZE = 10 };

struct some
{
int a, b;
}
many[MAX_SIZE] = { {.b = 5} };

int main()
{
int i;

for (i = 0; i < MAX_SIZE; i++)
{
printf("%d, %d\n", many[i].a, many[i].b);
}
}

我需要输出看起来像:

0, 5
0, 5
0, 5
... (10 times)

但是,实际输出是:

0, 5
0, 0
0, 0
... (10 times)

如何在不需要显式 for 循环分配值的情况下获得所需的输出?我知道在 C++ 中,这是通过为仅初始化 b 的结构提供构造函数来实现的。

最佳答案

这不是 C 标准,但是有了这个 gcc extension你可以这样做:

struct some many[10] = { [0 ... 9].b = 5 };

它也适用于 clang >= 5

关于c - 为结构元素数组初始化 C 结构中的一个成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51241228/

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