我有以下简单代码:
结构的第一次使用,f
工作正常,但我无法为 n
进行 malloc - 我收到错误,指出它 void* 无法分配到我的值(value)观*。我知道我不应该使用 malloc,那么我该怎么做呢?怎么了?
具体错误:
“void *”类型的值不能分配给时间“myValues *”的实体
#include <stdio.h>
#include <stdlib.h>
typedef struct values
{
int a;
char c;
void *pv;
values *next;
} myValues;
int main(){
myValues f;
myValues *n = malloc(sizeof(myValues));
}
最佳答案
很明显该程序被编译为C++程序。否则,编译器将发出错误,指出未为结构定义声明名称 values
。
typedef struct values
{
int a;
char c;
void *pv;
values *next;
^^^^^^
} myValues;
如果是这样,你必须写
myValues *n = ( myValues * )malloc(sizeof(myValues));
因为void *
类型的指针不能隐式转换为其他类型的指针。
(或者您需要将程序完全重写为 C++ 程序,例如用函数 malloc
的调用来代替运算符 new
的使用。)
或者您应该将该程序编译为 C 程序。在这种情况下你必须写
typedef struct values
{
int a;
char c;
void *pv;
struct values *next;
^^^^^^^^^^^^^
} myValues;
关于c - malloc 不转换为结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42615961/