我的代码从"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 *)
给它一个提示