- 本质
- 对比结构体
- 总字节数的计算
结构体,但是指定了各自的比特位长度。
好处是节省空间。
位段不跨平台。
想跨平台就不能用它。
这是一个普通的结构体,
四个 int ,共十六个字节。
#includestruct A { int a; int b; int c; int d; }; int main() { struct A a = { 1,2,3,4 }; printf("%lldn", sizeof a); return 0; }
效果:
这是一个位段,
也是四个int,但各自指定了比特位数。
所以长度会短很多。
#includestruct A { int a : 2; int b : 5; int c : 10; int d : 30; }; int main() { struct A a = { 1,2,3,4 }; printf("%lldn", sizeof a); return 0; }
效果:
总字节数的计算成员一般都是整型家族。而且类型一致。
成员都是int的话,开辟空间时,四个字节四个字节的申请。
如果剩余空间够,那就接着用。
如果剩余空间不够,直接废弃掉,新开四个字节。
先开四个字节,
第一个占两比特位。
第二个占五比特位。
第三个占十比特位。
第四个的时候,只剩下十五个比特位了,废弃掉。
新开四个字节,放置第四个。
总共就是八字节。



