无法从’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 *)
以给它一个提示