C中的结构,必须提到的是它实现位段的能力,位段的声明和结构类似,不同的是位段的成员是一个或多个位的字段,而这些不同的字段实际上存储与一个或多个整形变量中。
位段的声明和任何普通的结构成员声明相同,但要记住以下两点的不同:
1.位段成员必须为int,signed int ,unsigned int类型。
2.在成员名后面是一个冒号(:)和一个整数,其中整数指定该位段所占有的数目。
下面看一个位段声明的例子:
struct test
{
unsigned ch : 7;
unsigned font: 6;
unsigned size: 19;
}a;
这个声明在32位机上将根据下面两种可能来创建变量a;
1.
ch font size
|———————|——————|———————————————————|
|———————|——————|———————————————————|
2.
size font ch
|———————————————————|——————|———————|
|———————————————————|——————|———————|
位段能把长度为奇数的数据包装在一起,节省了存储空间,也可以很方便的访问一个10整数值的部分内容。