*房间[10]在此代码中的含义是什么?不是它通常是struct Room吗?在这种情况下它意味着什么?
struct Room
{
float width;
float length;
float height;
char *name;
};
struct House
{
char* address;
struct Room *rooms[10];
};
答案 0 :(得分:0)
struct Room *rooms[10];
将房间声明为指向struct Room
的指针的数组10
当House可以包含多达10个房间时,将使用这个,每个房间都在其他地方分配,使用空指针来表示数组中的“未使用”插槽。
答案 1 :(得分:0)
在
struct House
{
char* address;
struct Room rooms[10];
};
您有10个完整个Room
个实例。那就是你的House
结构大小是Room
结构大小的10倍加上一些额外的(address
)。此外,其中所有10个都位于内存的附近位置,导致更高的碎片。
另一方面,在
struct House
{
char* address;
struct Room *rooms[10];
};
你只需要存储指向10个房间的指针(需要在堆上分配)。在第一种情况下,当您使用House
作为参数调用函数时,您的堆栈会被炸毁,因为它需要一个巨大的结构存储在那里,而在第二种情况下,复制的结构要小得多,从而导致更快的函数调用。