一.什么是位段
位段 (bit-field)是以位为单位来定义结构体 (或联合体)中的成员变量所占的空间。
注意点:1.位段的成员必须是int、unsigned int 或者signed int、char
2.位段的成员名后面有一个冒号和一个数字
struct A
{
int a :2; //a占两个bit位
int b : 5;
int c : 10;
int d : 30;
}
二.位段的内存分配
1.位段的空间上是按照需要以4字节(int)或者1字节(char)来开辟
2.位段是不跨平台的,可移植程序应该避免使用位段
3.一个位段必须储存在同一个储存单元中,不能跨两个储存单元
例:在VS中,上述A结构体是如下图放置的。
先放置a,b,c,剩下的空间不够放d了,再开辟一个int,放入d,所以A结构体占字节大小为8
下图中第一个储存单元的空闲空间放不下a5,需要再开辟一个储存单元