如何在C中使用malloc()分配结构数组?

时间:2018-04-11 11:37:49

标签: c arrays pointers malloc structure

我想分配结构数组,但是我在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);

我不知道这可能是类型转换错误,但我无法修复它。 谢谢你的关注

1 个答案:

答案 0 :(得分:3)

您有2个错误:

使用sp而不是*sp并保留结构的大小,而不是指向结构的指针的大小(如果你真的想要一个结构数组而不是指针):

sp=malloc(sizeof(struct productStruct)*n);