文章目录
前言
本篇文章介绍c语言的位段。
一、位段是什么?
概念:c语言允许在一个结构体中以位为单位来指定其成员所占内存长度。
1.1 位段的声明
位段的声明格式为:
struct struct_name
{
类型名 成员变量名:宽度
};
位段的声明例子:
struct A
{
int _a : 2;
int _b : 5;
unsigned int _c : 10;
unsigned int _d : 20;
};
说明:
成员变量_a占2位
成员变量_b占5位
成员变量_c占10位
成员变量_d占20位
输出位段A的大小:
1.2 关于位段的说明
- 位段成员的类型可以指定为unsigned int或int。位段的宽度应是一个整型常量表达式,其值应是非负的,且必须小于等于类型的位长
- 对位段组,即使实际长度只占一个字节,但也分配4个字节。如果想要指定某一位段从下一存储单元存放,可以用以下形式定义:
这里的存储单元是指开辟空间的大小:
- 位段的成员变量的类型为int,按照4个字节开辟空间
- 位段的成员变量的类型为char,按照1个字节开辟空间
struct C
{
unsigned int a : 1;
unsigned int b : 2;
unsigned int: 0; //表示本存储单元不在存储数据