gpt4 book ai didi

C - 如何为每个数组元素动态分配内存?

转载 作者:太空宇宙 更新时间:2023-11-04 01:18:16 25 4
gpt4 key购买 nike

我有以下结构

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

我想为每个元素动态分配内存

heaparr *heap;

为每个元素动态分配内存,我用过

heap[i]=(heaparr*)malloc(sizeof(heaparr));

但每次编译代码时,我都会收到赋值类型不匹配错误。我该如何解决这种情况?提前致谢。

最佳答案

只能通过指针动态分配。如果要动态分配数组的每个元素,那么每个元素都必须是一个指针。

[编辑] 感谢@David C. Rankin 指出我,在这个特定示例中,我在堆栈中声明了一个包含 10 个指针的数组,以使代码更简单。您可以创建一个包含任意数量元素的预定义大小的数组,但它有一个限制,即一旦达到限制,您就不能重新分配 堆数据。您始终可以动态创建数组。

#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;
}

关于C - 如何为每个数组元素动态分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51435047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com