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
posted @ 2017-03-01 14:46  菜鸟开车  阅读(421)  评论(0编辑  收藏  举报