结构体 和 union 大小 小结

这是因为字节对齐原则,在Linux下其是按2字节对齐,可是在VC++下默认是按8字节对齐,必须满足4的整数倍。这样有助于存储效率。第一个char 为1字节,int为4字节,由于8字节对齐原则系统会预留出3个字节,保证8个字节对齐。而第二个两个char 2个字节,1个int4字节,系统补充2个字节后,此时8个字节,再加一个Int为12.满足条件

struct stOne // 结构体1
{
char c1;
int i1;
char c2;
int i2;
};

struct stTwo // 结构体2
{
char c1;
char c2;
int i1;
int i2;
};

各位大侠,上面两个结构体因为硬件的边界调整原则,占用内存大小并不相同。在我的电脑上,sizeof(struct stOne)是16,sizeof(struct stTwo)是12。

是不是  1 + 4 +(3字节对齐) = 8     2+ (2字节对齐) = 4   所以是   12

 

还有 union  是以最大的 为  空间  如果没有对其他地点进行初始化的话  回是垃圾值。  以我本人看  我这个是小端模式  大端模式的话  大数据存小地址。所以我这个是小端模式  大地之村大数据所以得出0

 

转载于:https://www.cnblogs.com/eat-too-much/p/6029400.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值