【每日一C之十六】C语言位字段
来源:互联网 发布:淘宝开店技巧与经验 编辑:程序博客网 时间:2024/05/21 16:07
每日一C之位字段
每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。
今日贝壳:C语言位字段的解析与用法
存储空间很宝贵的情况下,可以考虑利用C语言位字段将多个数据保存在一个机器字。机器字指计算机一次能处理数据的bit位数,一般所说的32位系统即指其机器字长为32bit。
1.定义位字段:C语言位字段定义方法:
struct {
unsigned int a : 1; //冒号“:”后的数字为该位字段所占的bit位数
unsigned int b : 3;
unsigned int c : 5;
}flags;
上面定义了一个flags变量,包含a,b,c三个位字段。位字段只能定义为以下3中类型:
1.int
2.signed int
3.unsigned int
需要提醒的是,位字段的赋值要特别小心范围,如unsigned int型flags.b只占3个位数,范围在000-111即0-7,超出范围会出现不可预知错误。
2.位字段访问:
1.位字段通过“.”号访问:flags.a , flags.b等等。
2.位字段没有独立的地址,不能进行取址操作。
3.位字段没有独立的存储空间,不能进行sizeof()操作。
3.内存分配规则:
1.位字段按声明顺序在机器字内存储
2.位字段不能跨越机器字存储,上一个机器字空间不足时,该位字段将全部存到下一个机器字
标准示例程序:
4.无名字段与0字段:
struct {
unsigned int a : 1;
unsigned int : 3; //无名字段,不可访问,仅起占位作用
unsigned int : 0; //0字段,下一个位字段在新机器字边界
unsigned int b : 7;
}flags;
受0字段作用, 位字段flags.b将在下一个机器字边界开始存储。
Have a nice day !
12 0
- 【每日一C之十六】C语言位字段
- C语言位字段
- C语言位字段
- c语言位字段
- C语言篇之位字段
- 【每日一C之四】C语言#预处理
- 【每日一C之八】C语言static用法
- 【每日一C之九】C语言const用法
- 【每日一C之十一】C语言volatile
- 【每日一C之十三】C 语言inline内联函数
- 【每日一C之八】C语言static用法
- 每日一C之C语言const用法
- C语言中的位字段
- C语言位字段应用
- 位字段-C语言
- c语言&位字段(位域)
- iOS每日一记---------------------之C语言的一些重点难点
- c语言进步之每日一题 1.排序
- mysql高级 tigger触发器 --[2]
- 优化WebLogic 服务器性能参数
- android-UI组件(四):AdapterView及其子类
- IOS开发入门基本知识——UIButton生成的关灯游戏(tag值的灵活运用)
- springmvc+spring+mybatis整合实例
- 【每日一C之十六】C语言位字段
- 第五章 面向对象编程(四)
- Android中Activity启动模式-初探
- rsync常见错误
- Java中两种比较器的实现
- CXF创建webservice客户端和服务端
- iOS学习之sqlite的创建数据库,表,插入查看数据
- 顺序容器学习之二
- iOS Web开发之输入类型及键盘风格