【发布时间】:2018-09-21 06:48:32
【问题描述】:
我想分配结构数组,但使用 GCC 时出现此错误:
st.c:在函数'main'中:
st.c:20:4:错误:从“void *”类型分配给“struct employeeStruct”类型时不兼容的类型 *sp=malloc(sizeof(struct productStruct)*n);
这是我的结构和指针:
struct productStruct
{
unsigned int ID;
unsigned long int serialnumber;
char name[40];
};
struct productStruct *sp;
在主函数从用户那里获取 n 变量后:(我收到此行的错误)
*sp=malloc(sizeof(struct *productStruct)*n);
我不知道这可能是类型转换错误,但我无法修复它。 感谢您的关注
【问题讨论】:
-
只要
sp=malloc(sizeof(struct *productStruct)*n);不要取消引用你会没事的 -
sp是指针,*sp是取消引用的指针。 -
@Jean-FrançoisFabre 我认为他更想要这个:
sp = malloc(sizeof(struct productStruct) * n) -
是的,刚刚意识到里面有奇怪的东西。更好的是:
sp=malloc(sizeof(*sp)*n);所以如果类型发生变化,malloc保持一致
标签: c arrays pointers malloc structure