位段是由结构体来实现的。
什么是位段
位段的声明和结构体是类似的,主要有两点不同:
1. 位段的成员必须是整型家族的(如:int, unsigned int, signed int, char 等等)
2. 位段成员名后有一个冒号和一个数字
举个例子:
这个S就是一个位段类型。
那么又回到一个问题,位段S的大小是多少?
位段的大小
这里要注意一下,冒号后面的数字代表的是比特位~
我们可以发现,在我们想要写一个判断的时候:
所以位段实际上是可以帮我们节省空间的~
回到正题上,位段的大小如何计算?
位段的内存分配
这里举个例子:
测试一下:
结果正是如此~
但是这里会出现一个新问题,且看下图:
存法问题:
结果是哪个存法呢?
结果为3,所以是第一种存法~
那么他们在内存中又是怎么样的表现形式呢?
内存中的表现形式:
打开内存测试一下:
果然~
不过,位段也是有局限性的!