有时,存储1个信息不必占用1个字节,只需二进制的1个(或多个)位就够用。如果仍然使用结构类型,则造成内存空间的浪费。
为此,C语言引入了位段类型。
位段的概念与定义
所谓位段类型, 是一种特殊的结构类型,其所有成员均以二进制位为单位定义长度,并称成员为位段。
例如,CPU的状态寄存器,按位段类型定义如下:
struct status
{
unsigned sign:1;/*符号标志*/
unsigned zero:1;/*零标志*/
unsigned carry:1;/*进位标志*/
unsigned parity:1/*奇偶溢出标志*/
unsigned half_carry:1;/*半进位标志*/
unsigned negative:1; /* 减标志*/
} flags;
内存分布
内存分布按照内存对齐原则
struct data{
unsigned char f1:1;
unsigned char f2:2;
};
cout<<sizeof(struct data); //1
匿名位段
匿名位段就是