c语言学习笔记 - 结构体位域
在学习结构体的时候遇到了位域这个概念,位域主要是为了节省内存空间,比如用一个32位,4个字节的int存储一个开关变量时,会造成空间浪费,于是干脆就考虑在这个32划分不同的区域来存储数据,例如划出1位存这个开关变量。
struct tag{
unsigned int a;
unsigned int b;
}
这个结构体会占用2个int对应的 8个字节,如果a,b存的是开关变量,仅仅需要2位即可,这样也只是在一个int里划分域就可以了
struct tag{
unsigned int a:1; //外面赋值的时候也不能超过分配的位数能存的最大数 ,例如 这里如果是 a:3 ,赋值不能超过 7
unsigned int b:1;
}
//这样就只需2个位来存数据了,但虽然只用到2位,该结构体依然是占用了4个字节,32位的。
struct