c语言 - 无法从"void *"转换为"节点 *"



我的代码从"void *"转换为"NODE *"时遇到问题

谁能帮我解决这个问题?

NODE *list_create(void *data)
{
NODE *node;
if(!(node = malloc(sizeof(NODE)))) return NULL;
node->data=data;
node->next=NULL;
return node;
}

我在 = 符号下方得到错误。任何帮助将不胜感激!

您尚未指定错误,但假设从代码的外观来看,最有可能的是类型转换错误,如下所示:

无法将 void* 转换为 NODE*

问题被标记为C,这里写的代码也是有效的C,但无效C++。因此,如果存在错误,可以安全地假设正在使用C++编译器来编译代码。

若要消除错误,请使用 C 编译器;或者,如果要坚持使用C++编译器,请显式键入 cast 返回值 malloc

if(!(node = (NODE*)malloc(sizeof(NODE)))) return NULL;
if(!(node = malloc(sizeof(NODE)))) return NULL;

malloc返回一个void指针(因为它不知道您要对所请求的内存执行什么操作)。

编译器试图找出为什么需要内存。将其投射到(NODE *)给它一个提示

相关内容

  • 没有找到相关文章

最新更新