gpt4 book ai didi

c - 替代 C 中的嵌套结构

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

当我想跟踪内部结构中有多少项时,我倾向于使用嵌套结构。所以我通常会做以下事情:

typedef struct Product {
char *name;
int qty;
} Prods;

typedef struct Category {
char *name;
int qty;
int prods_count;
Prods *prod;
} Cats;

然后我可以访问/释放数据:

Cats *cat = malloc(sizeof(Cats));
cat->prods_count = 10;
cat->prod = malloc(cat->prods_count, sizeof(Prods));
cat->prod[0].name = malloc(15);
strcpy(cat->prod[0].name, "Hello World!!!");
cat->prod[0].qty = 100;
for (i=0; i<cat->prods_count; i++)
free(cat->prod[i].name);
...

我想知道是否有一种方法可以只用一个struct 来做到这一点?

最佳答案

您可以为数量保留一个数组,为名称保留一个数组,但这会非常麻烦,因为它消除了将它们包含在自己的结构中所暗示的逻辑关系。

嵌套结构(以及它们在面向对象语言中的对象对应物)是非常自然的,您应该习惯它。

关于c - 替代 C 中的嵌套结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15777860/

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