当前位置: 首页 > news >正文

衡阳建网站北京二次感染最新消息

衡阳建网站,北京二次感染最新消息,线上销售培训机构,网站下做二级域名前言 最近在尝试阅读一些系统库的源码,但是其中存在很多让我感到既熟悉又陌生的语法。经过资料查阅,发现是 C 语言中的共用体和位域。于是,趁着课本还没有扔掉,将一些相关的知识点记录在本文。 文章目录 前言共用体 (union)枚举…

前言

最近在尝试阅读一些系统库的源码,但是其中存在很多让我感到既熟悉又陌生的语法。经过资料查阅,发现是 C 语言中的共用体和位域。于是,趁着课本还没有扔掉,将一些相关的知识点记录在本文。

文章目录

  • 前言
  • 共用体 (union)
  • 枚举 (enum)
  • 位域
  • 参考资料

共用体 (union)

公用体和结构体相似,也是一种数据构造机制。但是结构体中的各成员变量顺序排列存储,每个成员变量都有自己独立存储空间,而共用体中所有成员变量共享同一片内存区域,一个共用体变量在每个时刻里只能保存它的某个成员变量的值

定义格式如下:

union 共用体名 {成员列表
};

下面是共用体和结构体占用内存的情况:

#include <stdio.h>union UnionData {int a;float b;double c;char d;
};struct StructData {int a;float b;double c;char d;
};int main() {printf("%lu %lu\n", sizeof(UnionData), sizeof(StructData));return 0;
}

控制台输出结果:

8 24

在这里插入图片描述
共用体能支持在同一块内存区域对不同的数据类型进交替使用,增加了灵活性,节省了内存,通常在系统库中会有所应用。

枚举 (enum)

枚举 (enumeration) 是一系列命名的整型常量,它是一种基本数据类型,而不是一种构造类型。在“枚举”类型的定义中,我们需要列举出所有可能值,就像列举一周七天、一年四季等。

定义格式如下:

enum 枚举名 {枚举列表};

枚举的使用例子如下:

#include <stdio.h>// 枚举定义
enum Season {SeasonSpring = 1,SeasonSummer,SeasonAutumn, SeasonWinter
};int main () {Season a = SeasonSpring;switch (a) {case SeasonSpring:printf("SeasonSpring\n");break;case SeasonSummer:printf("SeasonSummer\n");break;case SeasonAutumn:printf("SeasonAutumn\n");break;case SeasonWinter:printf("SeasonWinter\n");break;}return 0;
}

控制台输出结果:

1 2 3

位域

有些数据在存储时并不需要占用一个完整的字节,只需要占用一个或几个二进制位即可。例如开关只有通电和断电两种状态,用 0 和 1 表示足以,也就是用一个二进位。

出于节省内存的角度考虑,就有了位域这种设计。位域是 C 语音中一种特殊的结构体成员,它允许我们指定它所占的内存位数

定义格式如下:

struct 位域结构名 {类型说明符 位域名 : 位域长度;
};

说明:

  • 一个位域必须存储在同 1 个字节中,不能跨两个字节。如果一个字节所剩的空间不足以存储下一个位域时,应该从下一个字节开始存储。
  • 位域长度不能大于 1 个字节长度,也就是说不能超过 8 位。
  • 位域的数据类型只能是 int、unsigned int、char、枚举等类型。
  • 位域可以没有位域名,因为无名的位域是不能使用的,所以只是用作填充或调整位置的作用。例如:
    struct BitStruct {int a : 4;int   : 2;  // 空域,不能使用int b : 4;int c : 4;
    }
    

参考资料

  • https://www.runoob.com/cprogramming/c-bit-fields.html
  • https://book.douban.com/subject/26792521/

本文主要对 C 语言中,共用体、枚举和位域等三块内容做简单介绍,涉及到他们在工程中应用的方面很少,如果后面阅读系统源码的过程遇到了,会再做进一步补充。

http://www.yayakq.cn/news/671961/

相关文章:

  • 手机 pc网站开发价格工业互联网平台建设及推广指南
  • 做网站视频一般上传到哪里网站内如何@
  • 科讯cms制作网站完整教程佛山网站推广seo
  • 华意网站建设网络公司怎么样站长平台工具
  • 网站建设方案书 模版湖南网站seo公司
  • 网站开发深圳奉贤网站建设推广
  • 有些人做网站不用钱的 对吗wordpress右边小工具栏
  • 网站建设 pdf教程网站建设如何存数据
  • 做网站前提需要什么asp网站怎么下载源码
  • 7牛wordpress关键词优化seo排名
  • 企业网站推广的模式江宁网站建设
  • 网站建设案例咨询郑州短视频培训机构
  • 如何做企业网站的排名中英文网站如何做思路
  • 计算机有网站建设专业吗机械网站建设比较好的
  • 网站备案域名更改公司服务信誉好的外贸管理软件
  • 中国贸易网站有哪些网站是一个链接的页面结合吗
  • 手机网站关键词排河南搜索引擎推广价格
  • 学网站建设有用吗品牌网站建设熊掌号
  • 龙江网站开发深圳建筑设计找工作哪个招聘网站
  • 广东备案网站企业网站建设与实现的论文
  • 网站如何做即时聊天wordpress查看权限
  • 济南建站模板电子商务网站建设情况
  • 免费绘画素材网站经典编辑器wordpress
  • 成都网站建设培训班给我免费观看片在线
  • 小型网站开发语言水果香精东莞网站建设技术支持
  • 没有版权的图片网站只做dnf的网站
  • 做极速赛车网站wordpress验证主题
  • 自己做视频网站 在优酷推广公司装修款怎么入账
  • wordpress安装ssl后网站404专做兼职的网站
  • 做企业网站需要准备什么材料对网站建设有什么样好的建设意见