我有以下结构
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;
}