gpt4 book ai didi

c++ - 具有嵌套结构的动态数组

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

我正在尝试使用嵌套结构构建动态数组。插入项目时,我得到以下信息。错误:从类型“struct B *”分配给类型“struct B”时类型不兼容

问题是什么,我在哪里做错了。请帮忙。

typedef struct {
size_t used;
size_t size;

struct B {
int *record1;
int *record2;
} *b;

} A;


void insertArray(A *a, int element) {
struct B* b = (struct B*)malloc(sizeof(struct B));
A->b[element] = b;
}

最佳答案

问题是 A.b 不是 struct 的数组,它是一个指针。您可以使指针指向 struct 的数组,但默认情况下不会这样做。

最简单的方法是malloc将正确数量的struct B放入开头的A.b中,然后将的拷贝放入code>struct B 直接放入该数组。

void initWithSize(struct A *a, size_t size) {
a->size = size;
a->b = malloc(sizeof(struct B) * size);
}

void insertArray(A *a, int index, struct B element) {
assert(index < a->size); // Otherwise it's an error
// There's no need to malloc b, because the required memory
// has already been put in place by the malloc of initWithSize
a->b[index] = element;
}

稍微复杂一点的方法是使用 C99 的灵活数组成员,但是将struct A组织成它们自己的数组的任务会很多更复杂。

关于c++ - 具有嵌套结构的动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19467395/

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