C语言中对内存存取信息一般以字节为单位。实际上,有时一个信息用不了那么多位,因此C语言中允许在一个结构体中以位为单位来指定其成员所占内存长度,这种以位为单位的成员称为“位段”或“位域”。利用位段能够用较少的位数存储数据。
Struct packed_data
{
unsigned a:2;
unsigned b:6;
unsigned c:4;
unsigned d:4;
int I;
} data;
其中a/b/c/d各占2位,6位,4位,4位。
对位段中引用方法data.a=8;
使用位段时的说明:
1、位段成员的类型必须指定为unsigned或int类型。
2、一个位段必须存储在同一个存储单元中,不能跨越两个单元,如果第一个单元空间不能容下一个位段,则该空间不用,而从下一个单元起存放该段。
3、可以定义无名位段。该空间不用。
4、位段的长度不能大于存储单元的长度,也不能定义位段数组。
5、位段可以用整型格式符输出。
6、位段可以在数值表达式中引用,它会被系统自动的转换成整数。
文章评论(0条评论)
登录后参与讨论