c++中结构体、联合、内存对齐

struct { 

    short a;

    char b; 
    float c; 
}cs; 

sizeof(cs)=8
首先一个第一个变量在0偏移处。短整型占两个字节,现在就到了2偏移处,一个char占一个字节,2是1的倍数,直接加在后面,现在是3偏移处,而float是4个字节,4不是3的倍数,需要再开辟一个字节,到4偏移处,然后加上4,所以结构体大小为8个字节,最后还要考虑,结构体总大小是不是所有变量的中最大对齐数的倍数,这个就是,就不用加了。如果不是的话,需要加到它的倍数。

 

union联合体其大小取决于所有成员中,占用空间最大的一个成员的大小。例:

union{ 

    short a[10];

    char b; 
    float c; 
}cs; 

sizeof(cs)=20

 

 

int=long=指针=4

char=1        short=2

double=8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值