C语言 结构体Struct 中冒号的用法

本文有部分内容参考菜鸟教程-C 位域 。

  • 关于“位域”的说明

    • 有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。
    • 为了节省存储空间,并使处理简便,C 语言又提供了一种数据结构,称为"位域"或"位段"。
    • 所谓"位域"是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。
  • 结构体表现形式

    struct 位域结构名
    {类型说明符 位域名: 位域长度}位域结构体定义的变量;
    
  • 下面开始结合例子进行说明

    • 例子1

      struct bit_st{int a : 7;int b : 2;int   : 5;int c : 3;
      }data;
      
      • bit_st表示位域结构体,a、b、c表示对应的位域," : "后面的值为对应位域占的位长度,data表示位域结构体定义的变量。

      • 一个位域存储在同一个字节中,如一个字节所剩空间不够存放相邻下一位域时,则会从下一单元起存放该位域。也可以有意使某位域从下一单元开始。

        比如:a占7位,b占2位,那么第一字节存了a之后,剩余空间就只有1位了,不够存放b,b就要从第二个字节开始存放啦~

      • 位域可以是无名位域,这时它只用来作填充或调整位置。无名的位域是不能使用的。

        比如:位域b的下一个位域是无名位域,这个无名位域占了5位,这5位填 0 表示不使用,那么第二个字节的空位就剩1位,放不下位域c,所以位域c要从第三个字节开始存放啦~

      • 由于位域不允许跨两个字节,因此位域的长度不能大于一个字节的长度,也就是说不能超过8位二进位。 如果最大长度大于计算机的整数字长,一些编译器可能会允许域的内存重叠,另外一些编译器可能会把大于一个域的部分存储在下一个字中。

      • 位域的使用和结构成员的使用相同,其一般形式为:

        比如:位域变量名.位域名

        比如:位域变量名->位域名

      • 给位域赋值(应注意赋值不能超过该位域的允许范围)。

        比如:位域b占2位,那么它可被赋的最大值为3(即二进制的11)。

  • 总结

    如果看着乱可以问我~
    欢迎探讨与指正 ━ (*`∀ ´ *)ノ亻!

C语言 结构体Struct 中冒号的用法相关推荐

  1. c语言结构体定义蚂蚁,C语言结构体(struct)常见使用方法

    C语言结构体(struct)常见使用方法 C语言结构体(struct)常见使用方法 基本定义:结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合) ...

  2. C语言 结构体 struct Cat cat1;

    引入 使用传统技术解决 需要定义多个变量或数组 结构体与结构体变量的关系示意图 类似Java类中的对象(结构体)与属性(结构体变量) 一切物体都可以看作对象(结构体) 补充:C语言数据类型 简单使用案 ...

  3. C语言结构体struct详解与实例

    目录 1.定义 2.应用 2.1初始化 2.2使用 3.结构体对齐规则与存储 1.定义 C语言中结构体(struct关键字定义)是一种自定义数据类型.通过结构体的定义可以将多种不同类型数据形成一个组合 ...

  4. C语言 结构体struct总结

    文章目录 一.前言 二.结构体的引入 三.结构体声明 四.结构体变量的定义 五.结构体变量的初始化 六.结构体变量成员的访问 七.结构体存储原理 八.结构体数组 8.1结构体数组的定义 8.2结构体数 ...

  5. C语言——结构体struct与typedef的使用

    我们常常在某些C语言代码中看到有时候typedef关键字和struct一起连用定义结构体,有时候只用struct关键字直接定义结构体,在此记录两者的一些用法,给自己做一个笔记,希望对大家也有所帮助.如 ...

  6. c语言结构体struct所占字节数求解

    原本觉的c语言学的还不错,今天看了一下c语言的有关书籍,看到求结构体大小的例子,心想这不是很简单吗,不就是把所有成员的大小加起来就行了,其实远没我想的简单,看来c语言还要继续学习哈哈. 先看一个实例 ...

  7. 关于C语言结构体(struct)介绍

    转自:微点阅读  https://www.weidianyuedu.com 导读:       C语言结构体,怎么理解? 你可以把它想象成一个桌面上的文件夹,这个文件夹里面可以有各种各样的文件,当然也 ...

  8. C语言怎么存储结构体,C语言结构体Struct怎么使用?

    在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据.结构体的定义形式为:struct结构体名{结构体所包含的变量或数组};结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相 ...

  9. c语言结构体语法分析,C语言结构体struct的语法解析

    本节内容需要结合视频讲解才能更容易理解,视频播放地址如下: 用java开发编译器 本节,我们着重研究结构体定义,也就是struct 这种变量定义,C语言编译器是如何解析的,本节我们要解析的结构体定义如 ...

最新文章

  1. .NET平台开源项目速览(2)Compare .NET Objects对象比较组件
  2. [译] 原生 JavaScript 值得学习吗?答案是肯定的
  3. linux 启动流详解
  4. 《软件调试分析技术》学习笔记
  5. LeetCode 2033. 获取单值网格的最小操作数(贪心)
  6. 平衡搜索树之红黑树(图片格式)
  7. .Net读取Excel(包括Excel2007)
  8. 一文带你浏览Graph Transformers
  9. SE_01 需求分析
  10. adb 切换usb模式_利用adb命令打开usb调试
  11. word2vec模型原理及实现词向量训练案例
  12. 网站备案后服务器更换到家里,域名备案后能更换服务器吗
  13. 2.字节跳动2019雀魂启动
  14. 如果让你设计一个微信朋友圈,你怎么设计
  15. 运动目标识别系统Matlab仿真——附上程序
  16. 清华大学五道口金融学院2022年博士生(联合培养项目)招生简章
  17. 等保2.0.第九章.等保2.0基础知识
  18. 代码随想录训练营day6
  19. 猿创征文|『编程与创作』10款颜值颇高的宝藏工具
  20. 新加坡金融科技节之声|蚂蚁金服CTO程立:面向全球开放能力

热门文章

  1. CHERRY樱桃键盘切换F1~F12功能的方法
  2. 精益创业和画布实战(1):变革家,让天下没有难懂的生意
  3. Orchestrator Failover过程源码分析-I
  4. 十几款国内外嵌入式(物联网、工业)操作系统介绍(至今总结最全)
  5. 树立正确的社会观与人生观
  6. MFC实现父窗口不透明,子窗口半透明效果
  7. 三角形网格 四方形网格_HTML5中3D对象的三角形网格
  8. android ip格式化输入法,手机键盘还能这样玩?简单几步,让你的输入法萌动可人!...
  9. snort mysql_snort 数据库
  10. 《数字经济全景白皮书》金融篇:五十弦翻塞外声,金融热点领域如何实现增长?