gpt4 book ai didi

c - 结构中的初始化数组

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

我不明白为什么我尝试以这种方式初始化结构时会出错

typedef struct _floor
{
int room;
int height;
int room_dim[room][2];
}Floor;

为什么我不能使用 room 来初始化 room_dim 数组?

最佳答案

A struct必须具有在编译时已知的大小。 room是一个结构变量,可以有任何值;因此,它不是编译时常量,不能用于调整 struct 的大小成员(member)。

相反,您可以使最终元素成为灵活的数组成员并在运行时分配它:

struct floor {
int rooms;
int height;
int room_dim[][2];
};

struct floor *make_empty_floor(int rooms) {
struct floor *ret = malloc(sizeof(struct floor) + sizeof(ret->room_dim)*rooms);
ret->rooms = rooms;
return ret;
}

现在您可以使用 ret->room_dim和往常一样,还有额外的malloc 'd 空间将用于 room_dim .

关于c - 结构中的初始化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18078848/

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