结构体,联合体,枚举( 2 )

目录

2.联合体

2.1联合体类型的声明

2.2联合体的特点

2.3联合体的内存大小

3.枚举

3.1枚举类型的声明

3.2枚举类型的优点

3.3枚举类型的使用


2.联合体


        联合体(Union)是另一种复合数据类型,它允许我们在同一内存位置存储不同的数据类型,但在任意时刻只能存储其中一个类型的值。联合体的大小由其最大成员决定,这使得它在需要节省内存或者在多个数据类型之间进行切换时非常有用。例如,我们可以使用联合体来存储一个整数或者一个浮点数,根据需要选择存储哪种类型的数据。

2.1联合体类型的声明

        和结构体一样,联合体也是由一个或者多个成员构成,这些成员可以是不同的类型。有意思的是,编译器只会给其中最大的成员来分配足够的空间,这就是联合体最大的特点——所有的成员公用一块内存空间,所以联合体也叫:共用体。

        那么给联合体其中⼀个成员赋值,其他成员的值也跟着变化呢?

仔细想想联合体的成员公用一个内存,那么给它赋值之后好像确实所有的成员值都会发生改变,换一种方式说,联合体调用哪个成员,哪个成员便会使用这块空间,就会输出你所赋的值。

输出结果为:


2.2联合体的特点

        联合体的成员是公用同一块内存空间的,这样一个联合体变量的大小,至少是最大成员的大小(因为联合体至少得有能力保存最大的那个成员)。

这里小编给出两个代码以帮助更好的理解联合体的特点:

代码1:

结果为:

(这里的运行结果每次都会变化,因为计算机会给联合体随机分配空间)

我们仔细分析就可以画出,un的内存布局图。以次来更好的理解

代码2:

结果为:

那么为什么会输出11223355而不是11223344,我们同意来画图分析。

这样是不是就更加理解了联合体的特点呢。


2.3联合体的内存大小

         结构体的内存大小遵循结构体的对齐规则,那联合体的内存大小是不是也应该有对齐规则呢?答案显然是有的。

  • 联合的大小至少是最大成员的大小。
  • 当最大成员大小不是最大对齐数的整数倍时,就要对齐到最大对齐数的整数倍。

结果为:


3.枚举


         枚举(Enum)是一种特殊的数据类型,它允许我们定义一个由一组命名的常数组成的集合。枚举在需要定义一组具有明确意义的选项时非常有用,比如一周的七天、一年的四季等。枚举的使用不仅可以提高代码的可读性,还可以避免使用魔术数(Magic Numbers),使得代码更加健壮和易于维护。

3.1枚举类型的声明

        枚举顾名思义就是一一列举,把可能取到的值一一列举。

比如我们生活中的:一周有7天可以一一列举,月份有12个月也可以一一列举,三原色也可以一一列举。

enum Day//星期
{
Mon,
Tues,
Wed,
Thur,
Fri,
Sat,
Sun
};
enum Color//颜⾊
{
RED,
GREEN,
BLUE
};

        以上的enum Day和enum Color都是枚举类型。


3.2枚举类型的优点

        既然是定义常量,那么define也可以用来定义常量,为什么还要创建一个枚举类型呢?

枚举的优点:

  1. 增加代码的可读性和可维护性
  2. 和#define定义的标识符比较,枚举有类型检查,更加严谨
  3. 便于调试u,预处理阶段会删除#define定义的符号
  4. 使用方便,一次可以定义多个变量
  5. 枚举常量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用


3.3枚举类型的使用

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/513095.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

携程获取景点详情 API 返回值说明,item_get_scenic-获取景点详情

xiecheng.item_get_scenic 请求示例,API接口接入Anzexi58 公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_sea…

AI预测福彩3D第25弹【2024年4月2日预测--第6套算法开始计算第2次测试】

今天,咱们进行第6套算法测试,本套算法将结合012路直选共27种组合,同时考虑了对012路的和值进行统计分析。今天为第2次测试,好了,废话不多说了。直接上结果~ 仍旧是分为两个方案,1大1小。 经过人工神经网络计…

使用minikube安装使用单机版K8S(docker)

前置:作为一个开发,工作之余想玩一下k8s,但是搭建成本太高,所以就找到了minikube这个工具,快速搭建单机版k8s,下面是个人搭建流程,基于centos7,仅供参考。 1.下载kubectl&#xff0…

[强推] 免费AI学习资料丨学习完还能获得微软证书,太香了!

五分钟白嫖一张微软学习证书 📅 重要日期: 🚀 开始:2024年4月1日 🔚 结束:2024年5月1日 如何参与: 🔗 挑战链接:立即参与 📃 提交表格:提交…

智慧公厕:提升城市公卫管理效率与环境舒适度的利器

公厕作为城市基础设施的重要组成部分,一直以来备受市民们的关注与诟病。然而,随着科技的发展和城市智慧化进程的推进,智慧公厕作为一种集成了物联网等技术的创新型公厕逐渐走入人们的视野。智慧公厕不仅实现了信息化、数字化和智慧化&#xf…

ATFX汇市:小非农ADP数据来袭,将为周五大非农提供前瞻指引

ATFX汇市:今日20:15,美国自动数据处理公司将公布美国3月ADP就业人数,前值为增加14万人,预期值增加14.8万人。上图为美国ADP数据的历史表现,最近七个月,新增就业人口的柱线呈现出显著震荡特征,最…

VPN——GRE

1、VPN概念 Virtual Private Network ①虚拟专用网络 ②在公有的网络上架设私有的通道,构建一个专用的、安全性、服务质量得到保障的网络 ③实质:数据包的再封装与解封装的过程 2、分类 按照业务用途:【1】access:外出员工…

【Go】十七、进程、线程、协程

文章目录 1、进程、线程2、协程3、主死从随4、启动多个协程5、使用WaitGroup控制协程退出6、多协程操作同一个数据7、互斥锁8、读写锁9、deferrecover优化多协程 1、进程、线程 进程作为资源分配的单位,在内存中会为每个进程分配不同的内存区域 一个进程下面有多个…

Emacs之解除comment-region绑定C-c C-c快捷键(一百三十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

​做一个个人博客第一步该怎么做?零基础就找一个现成的模板学一学呗

做一个个人博客第一步该怎么做? 好多零基础的同学们不知道怎么迈出第一步。 那么,就找一个现成的模板学一学呗,毕竟我们是高贵的Ctrl c v 工程师。 但是这样也有个问题,那就是,那些模板都,太!…

pygame--坦克大战(一)

项目搭建 本游戏主要分为两个对象,分别是我方坦克和敌方坦克。用户可以通过控制我方的坦克来摧毁敌方的坦克保护自己的“家”,把所有的敌方坦克消灭完达到胜利。敌方的坦克在初始的时候是默认5个的(这可以自己设置),当然,如果我方坦克被敌方坦克的子弹打中,游戏结束。从…

C++的字节对齐

什么是字节对齐 参考什么是字节对齐,为什么要对齐? 现代计算机中,内存空间按照字节划分,理论上可以从任何起始地址访问任意类型的变量。但实际中在访问特定类型变量时经常在特定的内存地址访问,这就需要各种类型数据按照一定的规…

【网站项目】课堂教学效果实时评价系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

2024 Python 最新趋势

Python 于 2023 年庆祝其诞生 31 周年。它将成功地完成其在竞技场上的三十年,并成功地与许多其他重要的编程语言进行激烈的竞争。因此很明显,2023 年 Python 对于软件开发人员来说非常重要。 Python 是一种通用、高级、解释性编程语言。如今&#xff0c…

leet hot 100-13 最大子数组和

53. 最大子数组和 原题链接思路代码 原题链接 leet hot 100-10 53. 最大子数组和 思路 生成一个数字来记录last 表示前面数字全部之和与0取最大值 如果大于0 就加上如果不大于0 就不管 从当前位置从新开始遍历计算 时间复杂度O(n) 空间复杂度(1) 代码 class Solution {…

C++——异常机制

目录 一,背景 1.1 C语言处理错误的方式 1.2 C异常概念 二,异常的使用 2.1 异常的简单使用 2.2 异常的匹配原则 2.3 异常抛对象 2.4 异常的重新抛出 2.5 异常安全 三,自定义异常体系 四,异常优缺点 4.1 优点 4.2 缺点 …

女大三抱金砖?看完这篇起诉状就明白:猜疑乃婚姻之大敌

女大三抱金砖?看完这篇起诉状就明白:猜疑乃婚姻之大敌 阿勇与阿芳,一对年过四十的夫妻,且有一对已成年的儿女,如今走到了婚姻的尽头。原告阿勇指控双方感情早已破裂,受父母包办婚姻影响,两人经常…

XL5300(ToF)传感器芯片产品介绍,可最大 4m 的精确距离测量

XL5300 是一款单模块封装 ToF 传感器,采用了 SPAD、TDC 和直方图技术,可实现最大 4000 mm 的精确距离测量,片内集成了单光子雪崩二极管(SPAD)接收阵列以及VCSEL激光发射器。该传感器可对物体进行精确的距离测量而不受物…

蓝桥杯物联网竞赛_STM32L071_15_ADC/脉冲模块

ADC模块用的是RP1不用多说了,主要是脉冲模块,这个模块没考过 这个脉冲模块放出脉冲,主要能用TIM捕获到这个脉冲的高电平持续时间即可 CubMx配置: 脉冲模块的引脚与PB0相连,所以用PB0读取上升沿记的数和下降沿记的数&am…

视频剪辑软件哪个好?2024会声会影怎么样呢?

随着科技的不断发展,视频制作已经不再是专业人士的专属领域,越来越多的人开始使用各种视频制作软件来记录生活、创作内容。其中,会声会影是被广泛使用的一款视频制作软件,其旗舰版更是备受关注。 视频剪辑软件哪个好?…