C - 使用空指针在结构之间创建链接



我想创建一个链接列表/树类型的结构,节点之间的链接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的数据,但上面的代码不起作用。怎么了?

这个:

node1->left=*(struct node2*)node2);

包含语法错误和不需要的强制转换。它还取消引用了node2的值,这使得它出错。

这:

node1=node1->left;

也是错的。不能将不同类型的指针分配给node1。当然,node1->leftvoid*所以这实际上是一个有效的赋值本身,但它会导致node2被解释为类型struct node1*,这是错误的。

如果我正确理解了您要执行的操作,正确的代码将是:

int main(void) {
struct node1* node1 = malloc(sizeof(struct node1));
struct node2* node2 = malloc(sizeof(struct node2));
node2->data = 5;
node1->left= node2;
// Access node2->data from node1:
((struct node2*)node1->left)->data;
return 0;
}

相关内容

  • 没有找到相关文章

最新更新