gpt4 book ai didi

没有特定长度的C结构数组成员

转载 作者:太空狗 更新时间:2023-10-29 16:35:52 25 4
gpt4 key购买 nike

我遇到过这段代码:

struct test                   
{
uint32 num_fields;
char array_field [];
};

如何理解array_field?这是 C 语言的 gcc 扩展吗?

最佳答案

这是一个 C99 特性,称为灵活数组成员,通常用于创建可变长度数组。

只能指定为 struct 的最后一个成员而不指定大小(如 array_field [];)。


例如,您可以执行以下操作,成员 arr 将为其分配 5 个字节:

struct flexi_example
{
int data;
char arr[];
};


struct flexi_example *obj;

obj = malloc(sizeof (struct flexi_example) + 5);

这里讨论的优点/缺点:

Flexible array members in C - bad?

关于没有特定长度的C结构数组成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17185247/

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