【发布时间】:2020-01-17 14:11:16
【问题描述】:
我想创建一个链表/树型结构,节点之间的链接为void*。
struct node1{
void* left;
void* right;
}
struct node2{
void* next;
int data;
}
int main(){
struct node1* node1=malloc(sizeof(struct node1));
struct node2* node2=malloc(sizeof(struct node2));
node2->data=5;
node1->left=*(struct node2*)node2);
node1=node1->left
}
我想使用node1 及其链接访问node2 的数据,但上面的代码不起作用。怎么了?
【问题讨论】:
-
我发现
*(struct node2*)node2有问题。首先你不需要演员表,因为node2已经是struct node2 *类型。其次,您取消引用指针以获取实际结构本身。 -
此外,
node1=node1->left会让你失去原来的node1指针,导致内存泄漏。更不用说node1->left应该指向一个node2结构,它混淆了很多类型。为什么不能使用正确的类型?为什么你认为你需要使用void *?这应该解决什么问题? -
问题是你没有打开编译器的警告。它会告诉你你需要知道的一切。
-
这是一项作业,我必须使用 void* 将结构绑定在一起
标签: c data-structures linked-list tree