gpt4 book ai didi

c - 如何将结构中的空指针分配给另一个结构?

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

我需要一些帮助来处理双向链表,其中节点的结构包含指向 void 的指针。如果我定义了另一个结构,我想在其中插入节点的实际数据,我如何将它分配给指向 void 的指针?另外,如何打印列表?

我的节点的结构,在头文件中定义:

typedef struct nodetype
{
struct nodetype *prev, *next;
void *data;
} NodeT;

我想在每个节点中插入的数据结构,在 main.c 中定义:
typedef struct dataStructure
{
int birthday;
char *name;
}

最佳答案

您需要正确定义第二个 typedef,例如

typedef struct dataStructure
{
int birthday;
char *name;
} dataStructure;

然后,一旦您分配/定义了结构,您就可以照常将第一种类型的指针设置为第二种类型:
dataStructure mydatastruct;
node->data = &mydatastruct; //(void *) can point to anything

或者
node->data = malloc(sizeof (dataStructure));  // direct allocation

您需要将 void 指针转换为 (dataStructure *)如果要通过节点结构访问数据结构的成员,例如
((dataStructure *)node->data)->birthday = 1980;

宏可以帮助使这不那么难看。

如果您的节点结构只会指向该数据结构,那么直接指向它会简单得多,而不是使用 void 指针。

关于c - 如何将结构中的空指针分配给另一个结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15440767/

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