无法从’void *’转换为’node *’

我的代码存在问题,无法从’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 *)以给它一个提示