一道C语言笔试题——理解结构体的内存对齐和位域问题

(Win32平台下在GNU GCC编译器中)

给定结构struct A
{
char t:4;
char k:4;
unsigned short i:8;//short大小为2字节,与之前的8位总共3个字节,补1个字节形成4字节对齐,到此为4字节

unsigned long m;//long大小为4字节
};问sizeof(A) = ?
【标准答案】8

注意:字节对齐还与编译器有关!!!

           编译器自身的默认对齐大小。

           gcc默认是按4字节对齐的,VC 6.0默认是按8字节对齐。但我们可以在程序中加入预编译指令改变默认对齐大小。

详细原理可参照:

C语言 结构体的内存对齐问题与位域 byxing_hao

编译器与字节对齐byzhangyang0402

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值