gpt4 book ai didi

c - 二叉树节点的 C 声明中的结构

转载 作者:行者123 更新时间:2023-11-30 21:27:40 25 4
gpt4 key购买 nike

struct node * newNode(int data)

有人可以告诉我什么是struct node*吗?node* 代表什么?

问这个问题的目的是:

int main(void){
struct node *node1,*node2;
node1 =(struct node*)malloc(sizeof(*node1));
node2=(struct node*)malloc(sizeof(*node2));
node1->value=7;
node1->left=node2;
node1->right=NULL;
node2->value=9;
node2->left=NULL;
node2->right=NULL;
printf("%d",node1->left->value);
}

这工作正常!现在这里为什么要转换 struct node* ?执行 struct *node 显示错误。

最佳答案

看起来你正在做一些与二叉树相关的事情。首先,而不是这两行:-

  node1 =(struct node*)malloc(sizeof(*node1));
node2=(struct node*)malloc(sizeof(*node2));

使用这些(推荐):-

  node1=(struct node*)malloc(sizeof(struct node));
node2=(struct node*)malloc(sizeof(struct node));

此外,malloc 返回一个 void 指针,并且必须将其转换为左侧的数据类型。

node1= malloc( ...);

在左侧(上面的语句),node1 的数据类型是 struct node所以它的指针类型将是 struct node * 。因此,struct node*如下所示用作强制转换。

node1=(struct node*)malloc( ... );

关于c - 二叉树节点的 C 声明中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48760088/

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