为了账号安全,请及时绑定邮箱和手机立即绑定

结构与联盟之间的区别

结构与联盟之间的区别

C
德玛西亚99 2019-07-31 11:31:52
结构与联盟之间的区别是否有任何好的例子来区分a struct和a union?基本上我知道它struct使用其成员的所有内存并union使用最大的成员内存空间。是否有其他操作系统级别的差异?
查看完整描述

3 回答

?
白板的微信

TA贡献1883条经验 获得超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)),再次有可能添加一些对齐。


查看完整回答
反对 回复 2019-07-31
  • 3 回答
  • 0 关注
  • 423 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信