1.位段的声明与结构体是类似的,但位段的成员必须是int,unsigned int或者sighed int,但在c99环境中无此限制
2.位段的成员后面有一个冒号和一个数字,数字代表成员占有的比特位
struct A
{int_a:3;unsigned int_b:4;signed int_c:5;};
//位段类型演示
3.位段的大小:字节加起来再换算为int类型,并向上取整比如上面占了12个比特位,一个int32个比特位,根据向上取整此位段占一个int的空间,所以sizeof(A)=4,部分可以使用char类型
4.位段的作用:节省空间,一般在变量的值在某一特定范围内使用,比如a只有0和1两个取值,那么给一个比特位就够了
5,位段有很多不确定因素,具有不可移植性,不跨平台(内存从左向右使用还是从右向左使用,数据大于空间要留下哪些位)(在剩余字节不够下一个成员的时候,会新开辟一个空间,但剩下的是否要被使用不确定)(位段成员是否有符号位不确定)(机器位数不确定)
6.判断位段运用方法,先假设从左到右和从右到左存储,再假设剩余空间是否浪费,再监视内存取地址观察(地址运算16进制,4比特位一读)
7.应用:IP数据报
8.注意事项:不能对位段成员取地址,所以不能用scanf,必须通过中间变量赋值,和const void*与void*一样