C语言中的位域

在C语言中,允许在结构体中以为单位来指定成员所占内存长度,这样的成员叫位域(bit field)

如:
typedef struct IPPacket
{
 u_int8_t headerlen:4,//低4位:头部长度
                 version :4; //高4位:IP版本;
            
 u_int8_t tos;
 u_int16_t totallen;
 u_int16_t id;
 u_int16_t offset; //高3位:标志;低13位:偏移
 u_int8_t ttl;
 u_int8_t protocol;
 u_int16_t checksum;
 struct in_addr srcip;
 struct in_addr dstip;
}IP;


注意:
1.空间分配方向:一般是从右到左
如上例:将headerlen放在低4位(右),version放在高4位(左)

2.位域成员类型为int 或unsigned

3.一个位域只能存储在同个存储单元中,不能跨越两个单元

4.位域的长度不能大于存储单元的长度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值