我的代码存在问题,无法从'void *'转换为'NODE *'
任何人都可以帮我解决这个问题吗?
NODE *list_create(void *data)
{
NODE *node;
if(!(node = malloc(sizeof(NODE)))) return NULL;
node->data=data;
node->next=NULL;
return node;
}
我在=符号下面得到了错误。 任何帮助将不胜感激!
答案 0 :(得分:1)
您没有指定错误,但从代码的外观假设,最可能的是类型转换错误,如:
无法将void *转换为NODE *
问题标记为C
,此处编写的代码也有效C
,但无效C++
。因此,如果出现错误,可以安全地假设正在使用C ++编译器来编译代码。
要删除错误,请使用C编译器;或者如果你想坚持使用C ++编译器,显式地输入转换malloc
的返回值。
if(!(node = (NODE*)malloc(sizeof(NODE)))) return NULL;
答案 1 :(得分:0)
if(!(node = malloc(sizeof(NODE)))) return NULL;
malloc
会返回一个void
指针(因为它不知道您要对所请求的内存做什么。
编译器正试图找出你想要内存的原因。将其投射到(NODE *)
以提示