结构与联盟之间的区别

结构与联盟之间的区别

是否有任何好的例子来区分a struct和a union?基本上我知道它struct使用其成员的所有内存并union使用最大的成员内存空间。是否有其他操作系统级别的差异?



德玛西亚99
浏览 424回答 3
3回答

白板的微信

这是简短的回答:结构是一个记录结构:结构中的每个元素分配新的空间。所以,像一个结构struct foobarbazquux_t {     int foo;     long bar;     double baz;      long double quux;}(sizeof(int)+sizeof(long)+sizeof(double)+sizeof(long double))为每个实例在内存中至少分配字节数。(“至少”因为体系结构对齐约束可能会强制编译器填充结构。)另一方面,union foobarbazquux_u {     int foo;     long bar;     double baz;      long double quux;}分配一块内存并给它四个别名。因此sizeof(union foobarbazquux_u) ≥ max((sizeof(int),sizeof(long),sizeof(double),sizeof(long double)),再次有可能添加一些对齐。
打开App,查看更多内容
随时随地看视频慕课网APP