c-结构中的指针而不是名称意味着什么

  • 本文关键字:意味着 结构 指针 c struct
  • 更新时间 :
  • 英文 :


*rooms[10]在这个代码中是什么意思?它通常不是structRoom吗?在这种情况下它意味着什么?

struct Room
{
     float width;
     float length;
     float height;
     char *name;
};
struct House
{
     char* address;
     struct Room *rooms[10];
};

在中

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为参数的函数时,您的堆栈会被炸毁,因为它需要一个巨大的结构存储在那里,而在第二种情况下会复制一个小得多的结构,从而导致更快的函数调用。

最新更新