我们通过结构体来讲述位段
首先位段的声明和结构体是类似的
其实位段的成员是整型和字符型(也是特殊的整型)
这个结构体类型里的成员叫位段成员
一般位段成员都是相同类型,或是大小相似的类型
struct A//位段类型名
{
int a:2;//冒号后面加数字,是位段的一般形式
int b:4;
};
位段的位是二进制位,其意思是该成员要占据冒号后面的数字个比特位去表达你要存储的数据
位段的额内存方式:
位段的内存空间需要以4个字节或1个字节内存去开辟(整型和char)空间的
而上面位段就只需要四个字节就可以存放,其他的空间的就浪费了,其实已经节省空间了,如果按照结构体的内存方式来存a需要4个字节,存b又得开辟4个字节的空间,这无形之中就浪费了很多空间。
但位段有很多不确定因素:位段成员存储的内存空间是怎样提取使用,标准C没有定义
int位段是不是有符号位段;
而那些我们提到被浪费的空间,是真的要被舍弃,还是要被利用起来(当第一个位段成员的四字节空间的使用后的剩余空间而不够给第二个成员)
位段的应用:一般再网上传输数据时,我们要将数据压缩的很小,尽量让数据空间小一些,这样可以传输更多数据