gpt4 book ai didi

c - malloc 结构中的结构数组

转载 作者:行者123 更新时间:2023-12-04 09:49:17 25 4
gpt4 key购买 nike

我有一个名为类(class)的结构,每个类(class)都有多个节点(另一个结构“节点”)。

它具有的节点数各不相同,但我从我正在读取此信息的文件中获得了该编号,因此该编号位于一个变量中。

所以我需要在结构中使用 malloc。但我很困惑。我知道您可以在结构中包含数组,但我不知道将创建 malloc 数组的代码放在哪里,因为我的结构在我的头文件中。这是我目前的代码。我意识到它看起来不对,我只是不知道如何修复它以及在何处初始化 malloc 数组。

struct course {
char identifier[2];
int num_nodes;
struct node *nodes;
nodes = (struct nodes*)malloc(num_nodes*sizeof(struct node));
};

struct node {
int number;
char type[2];
};

我希望能够做这样的事情:

struct node a_node;
struct course a_course;

a_course.nodes[0] = a_node;

等...

我没怎么用过C,这是我第一次在C中尝试使用动态数组。我的经验全部来自Java,当然Java并没有真正使用指针的方式与 C 相同,所以这让我有点困惑。

所以一些帮助将不胜感激,非常感谢:)

最佳答案

最简单的方法是创建一个初始化结构的函数:

void init_course(struct course* c, const char* id, int num_nodes)
{
strncpy(c->identifier, id, sizeof(c->identifier));
c->num_nodes = num_nodes;
c->nodes = calloc(num_nodes, sizeof(struct node));
}

为了对称,你也可以定义一个析构函数

void destroy_course(struct course* c)
{
free(c->nodes);
}

这些用法如下

struct course c;
init_course(&c, "AA", 5);
/* do stuff with c */
destroy_course(&c);

关于c - malloc 结构中的结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13746852/

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