字节对齐----结构体、共用体

本文详细探讨了C/C++中的字节对齐规则,通过实例解析了结构体和共用体的字节对齐方式。结构体的大小取决于其成员中最宽基本数据类型的大小,共用体则只占用最大基本数据类型的大小。同时,文章还分析了结构体中包含共用体或共用体包含结构体时的对齐策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字节对齐

结构体字节对齐:(结构体成员的数据类型为基本数据类型(int,double,char,short,long等))

结构体的总大小是结构体成员中最宽基本数据类型大小的整数倍

#include<iostream>

using namespace std;

struct S0

{

    int a;

char b;

short c;

};

struct S1

{

char b;

int a;

short c;

};

struct S2

{

short d;

char b;

short e;

int a;

short c;

};

void main()

{

S0 s0;

cout << sizeof(s0) << endl;

S1 s1;

cout << sizeof(s1) << endl;

S2 s2;

cout << sizeof(s2) << endl;

}

输出结果:

8

12

16

 

总结:对于这种成员数据类型都为基本数据类型的结构体:

1.若最宽基本数据类型的成员位置在结构体成员的边上(最上边/最下边),则其它小的数据类型字节数之和与最宽的类型大小对齐(整数倍),而结构体的大小就是最宽的数据类型大小与其它的对其后的大小(整数倍)之和;

S0:

最宽(大)的类型为int(4字节)  其它:char(1个字节)short(2个字节)  总共3字节,与int对齐后为4字节,则结构体S0的字节大小为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值