gpt4 book ai didi

c - 结构声明之后的数组定义

转载 作者:行者123 更新时间:2023-12-03 03:41:23 25 4
gpt4 key购买 nike

我遇到了一个相当不寻常的数组定义,它紧随结构定义之后。我找不到任何关于此的具体信息。那么您能告诉我这里发生了什么以及这种语法/符号的可能用法或优点吗?

struct MAGIC {
int a;
char* b;
} magic[] = { //WHAT IS THIS LINE!?
{0, "this is A"},
{1, "this is B"}
};

int main()
{
printf("0=>%d %s, 1=>%d %s\r\n",
magic[0].a, magic[0].b,
magic[1].a, magic[1].b);

return 0;
}

输出:

0=>0 this is A, 1=>1 this is B

我了解到结构体是这样声明的:

typedef struct MYSTRUCT {
//members
} mystruct_t;

然后我会创建数组:

mystruct_t s[] = { /* */ };

最佳答案

声明了一个 magic 类型为 struct MAGIC 的数组,它由两个立即初始化的元素组成。

未明确指定数组大小;它是从初始化器的数量得出的。一个优点是,如果您稍后需要其他(初始化的)元素,您可以只提供初始化程序,而无需费心调整数组大小规范。

关于c - 结构声明之后的数组定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49488473/

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