C语言中的位段(位域)知识

在结构体或类中,为了节省成员的存储空间,可以定义某些由位组成的字段,
这些字段可以不需要以byte为单位。 这些不同位长度的字段
实际存储于一个或多个整形变量。位段成员必须声明为int, signed int, unsigned int类型。
在成员的后面是一个冒号和一个整数,这个整数指定该位段所占用的位的数目。位段范例:
struct CHAR
{
unsigned ch : 7;
unsigned font : 6;
unsigned size : 19;
}
struct CHAR ch1;
这个声明取自一个文本格式化的代码,它可以处理多达128个字符(7个位),64种不同字体(6个位),0到524287个单位的长度。
位段使程序员能够利用存储ch和font所剩余的位来增加size的位数。
位段好处:
   1 能够把长度为奇数的数据包装在一起,节省存储空间。
   2 方便访问整形值的部分内容。
位段的缺点:
移植性较差,位段的成员在内存中是从左到右分配还是从右到左分配根据系统来定。
注意点:由于取地址操作符不能应用在位段上,所以没有能指向位段的指针。估计因为位段的存放位置不是按照字节为单位来存放的。
位段也不能是静态成员。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值