sizeof sturct 字节对齐

例如:

typedef struct S1
{
int a;
int b;
int c;
int d;
char e;
float f;
short g;
long h;

};

void main()
{
int b,c; int e;
struct S1 test;
int a=(b=4,c=6,e=8);
printf("sizeof test1 is %d/n",sizeof(test)); //结果32

}

原理:1,字节数计算从0开始

         2,当前的位置必须可以同当前类型字节整除,才可以作为起始位置

         3,选定好起始位置后,这个起始位置也要包含在字节数计算内

         4,最大的字节长度必须是8的整数倍 ,如果不是的话就计算成8的整数倍就可以了

 

详解:首先是一个int,那么从0开始,因为0可以整除int类型字节大小4,所以就从0开始算起计算四个字节,就到了位置3,那么0~3就是这个int的字节长度,接着又是一个int,那么3后面是4,4可以整除int类型字节大小4,所以就从4开始计算,4~7为第二个int的字节长度,依次类推,最后的字节长度 31,因为这个最终的长度必须是8的整数倍,所以最近的就是32,那么这个struct的sizeof就是最终的32字节长

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值