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

时间:2013-11-16 15:29:46

标签: c malloc

我的代码存在问题,无法从'void *'转换为'NODE *'

任何人都可以帮我解决这个问题吗?

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

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

2 个答案:

答案 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 *)以提示