error C2440: '=' : cannot convert from 'void&n C语言

本文提供了解决C++编程中遇到的void到struct类型转换时出现的errorC2440错误的方法,通过实例演示了如何正确进行类型转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常:error C2440: '=' : cannotconvert from 'void *' to 'struct _Grafo*'        Conversion from 'void*' to pointer to non-'void' requires anexplicit cast



void Insert1(struct BTreeNode** BST, ElemType x)

{ if (*BST==NULL) //在为空指针的位置链接新结点

{ struct BTreeNode* p = malloc(sizeof(structBTreeNode));

p->data = x; p->left =p->right = NULL; *BST = p; }



这是个例子,只需要

struct BTreeNode* p = (structBTreeNode*)malloc(sizeof(struct BTreeNode));即可。

这个错误是因为在赋值时将一个指针赋给了一个非指针类型的变量。在你提供的代码中,有三个不同的版本,但是它们都有相同的问题。在这些代码中,函数CreateBiTree的参数是一个指向指针的指针,而在函数内部,你尝试将一个指针赋给一个非指针类型的变量。这是不允许的。 为了解决这个问题,你需要将函数CreateBiTree的参数改为指向指针的指针,并在函数内部使用间接引用操作符(*)来访问指针指向的内容。这样,你就可以正确地将指针赋给相应的变量。 下面是修改后的代码示例: ```c #include<stdio.h> #include<stdlib.h> typedef char TElemType; typedef struct BiTNode { TElemType data; struct BiTNode *lchild, *rchild; } BiTNode, *BiTree; void CreateBiTree(BiTree *T) { TElemType ch; scanf("%c", &ch); if (ch == '#') { *T = NULL; } else { *T = (BiTree)malloc(sizeof(BiTNode)); (*T)->data = ch; CreateBiTree(&((*T)->lchild)); CreateBiTree(&((*T)->rchild)); } } void traverse(BiTree r) { if (r == NULL) { return; } printf("%c", r->data); traverse(r->lchild); traverse(r->rchild); } int main() { BiTree root; CreateBiTree(&root); traverse(root); printf("\n"); return 0; } ``` 这样修改后的代码应该能够解决你遇到的问题。希望对你有帮助! #### 引用[.reference_title] - *1* *2* *3* [C语言创建二叉树过程中遇到的一些问题](https://blog.youkuaiyun.com/u014285517/article/details/50440829)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值