gpt4 book ai didi

c - 将结构数组分配给另一个结构成员时类型不完整

转载 作者:太空宇宙 更新时间:2023-11-04 06:14:27 26 4
gpt4 key购买 nike

我已经处理了一段时间,但似乎无法弄清楚发生了什么。我在头文件中为结构提供了空定义,因此它们是不透明的。

typedef struct block_store block_store_t;
typedef struct block block_t;

我实际上在另一个文件中定义了它们。

struct block_t{
void* data;
};

struct block_store_t{
block_t* b;
};

void create_struct(){
block_store_t* bs = malloc(sizeof(block_store_t*));
block_t* array = malloc(sizeof(block_t*) * 256);

bs->b = array; //error: dereferencing pointer to incomplete type
}

最佳答案

typedef struct 在另一个结构中使用它之前

typedef struct block{
void* data;
}block_t;

typedef struct block_store{
block_t* b; /* it works bcz you typedefed before only */
}block_store_t;

另外 sizeof(block_store_t*) 应该是 sizeof(block_store_t) 因为第一个只分配等于 struct pointer 大小但你可能想要分配等于整个结构大小。

block_store_t* bs = malloc(sizeof(block_store_t));/* allocate memory equal to sizeof structure, not just 4 bytes */
//block_t* array = malloc(sizeof(block_t) * 256);
block_t* array = malloc(sizeof(*array) * 256);/*preferable to use bcz it work for any data type */

关于c - 将结构数组分配给另一个结构成员时类型不完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48818899/

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