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

标签 c arrays pointers malloc structure

我想分配结构数组,但 GCC 出现此错误:

st.c: In function ‘main’:
st.c:20:4: error: incompatible types when assigning to type ‘struct employeeStruct’ from type ‘void *’ *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);

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

最佳答案

您有 2 个错误:

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

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

关于c - 如何在 C 中使用 malloc() 分配结构数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49774138/

相关文章:

c - 矩阵分配

php - 如何在 PHP 中将整数转换为数组?

c - 尝试使用两个指针就地反转字符串

c - C 指针表示法中的这些数组发生了什么?

c - 我们如何检查给定 parent 的 child 是否存在?

c - C中的类型转换

arrays - 细菌数量玻璃覆盖率

c# - 使用数组或泛型时 TestCase 在 NUnit 中的显示名称

ios - C 风格二维数组作为 ivar

c++ - 将指向成员函数的指针转换为普通指针