首页  >   经验  >   C语言位域的使用详细分析

C语言位域的使用详细分析

查看 codexia 的博客 2015-06-26 23:21:19 1576
C   语言   位域  
手机阅读 | 转发赚积分
手机收藏 | 分享给好友
简介C语言中的位域的使用的分析,开发中非常实用,网上的文章说的不清不楚的,所以才总结了此篇文章,即解开了自己的疑惑,也希望能帮到大家。
感谢 阿里云 对本站(本站由阿里云高性能服务器搭建)的赞助支持,本站推荐 →高性能云服务器2折起优惠由此进←↓
高性能云服务器2折起

    C语言位域的使用,在开发中是非常常见的,比如各种协议的解析、各种文件格式的解析等都需要用到位域。因为为了充分利用内存或者减少通信量,定义各种协议格式等都是以位为单位,而不是以字节为单位。而对于位域的理解,很多人经常会感觉不清不楚。说会用也会用,但是也说不出所以然。
在开发的过程中,会为了节省内存,或者为了降低通信的信息量,而以位作为最小单位。通常用一个字节表示的一个状态,可以使用几个位组合起来表示,这样,一个字节可以存放多个状态,而不是多个字节,这样也就节省了大量的内存。内存开销变小,网络发送的数据包小了,因此效率也高了。
为了支持这样的需求,C语言就使用了位域。对于位域的理解,可以简单理解为一个结构体,用法也和结构体一样。不同的就是表示的单位变小。在这里就所有区别,这里也是让我疑惑的地方。而网上找了很多发现不是转载就是抄袭,对于我心里的疑问没有得到解答。
没有办法,又要自己研究一下了。通过实践来验证我的假设,然后来解决我的疑问。
    首先我们来看看位域类型的定义、声明和使用。
    不要觉得位域很神秘的样子,在定义位域类型、声明位域变量,和使用位域变量,和结构体没有两样,一模一样。那么此时,使用位域你是不是有了清晰的思路了呢?如果不清楚,那么请复习结构体的使用。
然后,结构体是以字节位最小单位的,而位域则是以位为最小单位,位域中的成员大小则是可以自己指定的。但是注意,位域成员的大小最大不能超过定义的类型的所占的位数。如:

关注左侧公众号
发送命令 rd eRnKa 复制
自动刷新 手动刷新
传送命令到手机
提示:如果您发送了命令,自动刷新会展开全文。自动刷新最多60秒,超过60秒请点击手动刷新。推荐使用“传送命令到手机”,一键复制命令并自动跳转到公众号。
创作不易,汗水不止!为防止劳动果实被爬虫窃取,开启了反爬机制,需要您在公众号发送命令继续阅读。取关会再次出现此提示。一段时间后出现此提示,请再次发送即可。如有问题,请加客服微信Freeme007处理。感谢您的理解。
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
文章标题:C语言位域的使用详细分析
文章地址:http://www.cjjjs.com/article/6262015192123558
转载到个人博客,请在文末带上右侧内容(含超链接):本文转载自:C语言位域的使用详细分析
收藏 0 点赞 0
公众号
微信赞赏
支付宝赞赏
领支付宝大红包
QQ群

相关阅读

  1. C++ Primer Plus 6th 6.11 编程练习题 第7题 统计单词的元音和辅音等的个数 查找全网同类文章
  2. C++ Primer Plus 6th 6.11 编程练习题 第6题 记录捐款姓名和捐款数额 查找全网同类文章
  3. C++ Primer Plus 6th 6.11 编程练习题 第5题 个人所得税计算 查找全网同类文章
  4. C++ Primer Plus 6th 6.11 编程练习题 第4题 菜单选择显示BOP的成员 查找全网同类文章
  5. C++ Primer Plus 6th 6.11 编程练习题 第3题 编写一个菜单驱动程序的雏形 查找全网同类文章
  6. C++ Primer Plus 6th 6.11 编程练习题 第2题 循环读取double并统计数据 查找全网同类文章
  7. C++ Primer Plus 6th 6.11 编程练习题 第1题 字符的大小写转换和回显字符 查找全网同类文章
  8. C++ Primer Plus 6th 6.10 复习题 第9题 重写代码片段,避开break和continue 查找全网同类文章
  9. C++ Primer Plus 6th 6.10 复习题 第8题 case的数字标签和字符标签的区别 查找全网同类文章
  10. C++ Primer Plus 6th 6.10 复习题 第7题 用switch改写if else 查找全网同类文章
分享到:
分享文章[C语言位域的使用详细分析]到QQ空间

相关阅读

猜您感兴趣