我有以下结构

typedef struct h{
        int key;
        float data;
        char name[20];
}heaparr;

我想为的每个元素动态分配内存
heaparr *heap;

为了动态地为每个元素分配内存,我使用了
heap[i]=(heaparr*)malloc(sizeof(heaparr));

但每次编译代码时,都会出现赋值类型不匹配错误。我该如何解决这个问题?提前谢谢。

最佳答案

只能通过指针动态分配。如果要动态分配数组的每个元素,则每个元素都必须是指针。
[编辑]感谢@David C.Rankin告诉我,在这个特定的例子中,我在堆栈中声明了一个由10个指针组成的数组,使代码更简单。您可以使用任意数量的元素创建一个预定义大小的数组,但它有一个限制,即一旦达到该限制,就不能realloc堆数据。始终可以动态创建数组。

#include <stdlib.h>

typedef struct h {
    int key;
    float data;
    char name[20];
} heaparr;

int main()
{
    heaparr *heap[10];
    int i;
    for (i = 0; i < 10; ++i) {
        heap[0] = malloc(sizeof(heaparr));
    }

    return 0;
}

10-05 21:10