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 方便访问整形值的部份内容。
位段的缺点:
移植性较差,位段的成员在内存中是从左到右分配仍是从右到左分配根据系统来定。
注意点:因为取地址操做符不能应用在位段上,因此没有能指向位段的指针。估计由于位段的存放位置不是按照字节为单位来存放的。
位段也不能是静态成员。程序员

相关文章
相关标签/搜索