C语言:自定义类型:联合体和枚举

目录

联合体

联合体是什么?

联合体的大小计算

枚举

枚举是什么?

为什么要使用枚举?


联合体

联合体是什么?

联合体也是个自定义类型,它和结构体类似,都是由多个成员构成,可以有不同的内置类型

但它们是有区别的

联合体之所以叫联合体,是因为它里面的成员会重复使用一块内存空间

所以联合体也叫共用体

union Un
{char c;int i;
};

union Un是创建的联合体类型

大括号里面的是联合体成员 

最后要加个分号不能忘记

联合体的大小计算


这里的char c 是会和 int i 共用一块空间的,如图

所以我们最终如果打印这个联合体的大小

#include<stdio.h>union Un
{char c;int i;
};int main()
{printf("%zd", sizeof(union Un));return 0;
}

 

联合体计算方法:

1. 联合体的大小至少是最大成员的大小

2. 当最大成员的大小不是最大对齐数的整数倍的时候,就要对齐到最大对齐数的整数倍

方法和上一章的结构体计算差不多,但联合体相对较简单

例如:

#include<stdio.h>union Un
{short c[7];int i;
};int main()
{printf("%zd", sizeof(union Un));return 0;
}

根据上面的计算方法1

short为2个字节,int为4个字节

最大成员为c[7],大小为2*7=14个字节

所以联合体的大小至少是最大成员14个字节的大小

根据上面的计算方法2

要调整到最大对齐数的整数倍,这里不难看出最大对齐数为4

所以答案应该是16个字节

如果不会算最大对齐数可以看看我上一章结构体对齐规则

C语言:自定义类型:结构体-CSDN博客

枚举

枚举是什么?

枚举其实就是全部列举

例如:

enum Day
{Mon,Tues,Wed,Thur,Fri,Sat,Sun
};

enum Day是创建的枚举类型

大括号里面是成员,会自动赋值从0开始

最后的分号也不能忘记

所以Mon是0,Tues是1......Sun是6

所以这样明显是不正确的,Mon不是应该是1吗?

所以我们是可以改的

enum Day
{Mon = 1,Tues,Wed,Thur,Fri,Sat,Sun
};

这样就会默认从1开始一直往下赋值

这样我们就可以在枚举作用的范围内直接使用它的成员作为值了,跟宏定义类似

为什么要使用枚举?

1. 增加代码的可读性,相比数字来说使用文字能更让人读得懂代码的含义

2. 与#define相比它拥有类型检查,更加严谨

3. 便于调试,若#define会在预处理阶段就删除#define定义的符号

4. 使用方便,可以一次定义多个常量

5. 遵循作用域,枚举若只声明在函数内,则只能在函数内部使用


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OJ】动归练习二

个人主页 &#xff1a; zxctscl 如有转载请先通知 题目 1. 91.解码方法1.1 分析1.2 代码 2. 62.不同路径2.1 分析2.2 代码 3. 63.不同路径 II3.1 分析3.2 代码 1. 91.解码方法 1.1 分析 题目所述就是把一串数字反向解码为字母映射出来&#xff0c;有多少种方法。 题目也说&…

nav仿真(2)

开启仿真和建图 打开第一个窗口启动仿真&#xff1a; source devel/setup.bash export TURTLEBOT3_MODELburger roslaunch turtlebot3_gazebo turtlebot3_world.launch # 启动仿真打开第二个窗口&#xff0c;开始建图&#xff1a; source devel/setup.bash export TURTLEBOT3_…

mysql存储引擎、行锁与索引的关系

一、存储引擎概念介绍 MySQL中的数据用各种不同的技术存储在文件中&#xff0c;每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力&#xff0c;这些不同的技术以及配套的功能在MySQL中称为存储引擎 存储引擎是MySQL将数据存储在文件系统中的存储…

个人网络防范

目录 安全事件频发根源在于背后利益链条 不仅仅是中国 网络安全事件成国际性难题 个人网络信息安全防护 四招来帮忙 首先&#xff0c;预防第一 第二&#xff0c;健康的上网浏览习惯 第三&#xff0c;WiFi安全性 第四&#xff0c;规范的文件处理 黑客攻击无孔不入&…

小程序网络视频组件video经常出现的错误解决

小程序网络视频组件错误 1.错误提示如下 3[渲染层网络层错误] Failed to load media http://www.xxx.net/download/1.mp4#devtools_no_referrer net::ERR_FAILED From server 112.126.62.195(env: Windows,mp,1.06.2401020; lib: 3.3.4)2.解决文章请参考 本文链接&#xff…

隐语技术架构

隐语架构 产品定位 算法层 计算层 密码原语 互联互通–资源层 总结

写了几个难一点的sql

写了几个难一点的sql SELECT bn.id AS book_node_id, t.version_id, bn.textbook_id, s.id AS subject_id, s.stage_id, COUNT( CASE WHEN d.document_type_id 1 AND d.scope IS NULL AND p.document_id IS NOT NULL THEN 1 END ) AS type_1_count, COUNT( CASEWHEN d.docume…

教程1_图像入门

一、读取图像文件 cv2.imread() 是 OpenCV 库中的一个函数&#xff0c;用于读取图像文件。下面是 cv2.imread() 函数的基本介绍和使用方法&#xff1a; 函数定义 cv2.imread(filename, flagscv2.IMREAD_COLOR) 参数 filename&#xff1a;要读取的图像的路径和文件名。flags…

前端理论总结(css3)——三角形/梯形 // 一边固定另一边自适应

三角形/梯形 三角形 width: 0; height: 0; border-top: 40px solid transparent; border-left: 40px solid transparent; border-right: 40px solid transparent; border-bottom: 40px solid #ff0000; 梯形 width: 50px; height: 0; border-bottom: 50px solid red; border-l…

JavaScript typeof运算符使用

typeof NaN 的数据类型是数字对象、数组、null 、日期 的数据类型是 object未定义变量、未赋值变量的数据类型为 undefined typeof "Bill" // 返回 "string" typeof 3.14 // 返回 "number" typeof NaN …

数据结构(五)——树与二叉树的应用

5.5 树与二叉树的应用 5.5.1 哈夫曼树 结点的权&#xff1a;有某种现实含义的数值。 结点的带权路径长度&#xff1a;从树的根到该结点的路径长度&#xff08;经过的边数&#xff09;与该结点上权值的乘积。 树的带权路径长度&#xff1a;树中所有叶结点的带权路径长度之和…

Spring如何解决循环依赖?

Spring中的循环引用 循环依赖&#xff1a;循环依赖其实就是循环引用,也就是两个或两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于A 循环依赖在spring中是允许存在&#xff0c;spring框架依据三级缓存已经解决了大部分的循环依赖 ①一级缓存&#xff1a;单例池…

linux系统------------Mysql数据库介绍、编译安装

目录 一、数据库基本概念 1.1数据(Data) 1.2表 1.3数据库 1.4数据库管理系统(DBMS) 数据库管理系统DBMS原理 1.5数据库系统&#xff08;DBS) 二、数据库发展史 1、第一代数据库 2、第二代数据库 3、第三代数据库 三、关系型数据库 3.1关系型数据库应用 3.2主流的…

【深度学习】Pytorch中实现交叉熵损失计算的方式总结

在PyTorch中&#xff0c;计算交叉熵损失主要有以下几种方式&#xff0c;它们针对不同的场景和需求有不同的实现方式和适用范围&#xff1a; 1. nn.CrossEntropyLoss 类 这是最常用且方便的方法&#xff0c;特别适用于多分类任务。nn.CrossEntropyLoss 实际上是同时完成了 sof…

前端理论总结(css3)——页面布局方法

瀑布流 优点&#xff1a;节省空间&#xff0c;外表美观&#xff0c;更有艺术性 对于触屏设备非常友好&#xff0c;通过向上滑动浏览 用户浏览时的观赏和思维不容易被打断&#xff0c;留存更容易 缺点&#xff1a;用户…

feign demo

直接上代码 AscendKing/springcloud-feign

Saltstack 最大打开文件数问题之奇怪的 8192

哈喽大家好&#xff0c;我是咸鱼。 今天分享一个在压测过程中遇到的问题&#xff0c;当时排查这个问题费了我们好大的劲&#xff0c;所以我觉得有必要写一篇文章来记录一下。 问题出现 周末在进行压测的时候&#xff0c;测试和开发的同事反映压测有问题&#xff0c;请求打到…

一键实现数据采集和存储:Python爬虫、Pandas和Excel的应用技巧

作为一名互联网技术爱好者&#xff0c;我对数据的探索充满热情。在本文中&#xff0c;我将以豆瓣读书为案例&#xff0c;详细介绍如何利用Python爬虫、Pandas和Excel这三大工具&#xff0c;一键化地实现数据采集和存储。豆瓣读书作为一个备受推崇的图书评价平台&#xff0c;拥有…

亮剑AIGC,紫光云能否胜人一筹?

【全球云观察 &#xff5c; 科技热点关注】 扎实创新每一步&#xff0c; 先人一步快人一步。 2023年全球科技行业最火的莫过于生成式AI&#xff0c;即Artificial Intelligence Generated Content。在迈向生成式AI的道路上&#xff0c;虽然说不上千军万马&#xff0c;但是国内…

一文看懂算法交易(一)

国内T0算法哪家强&#xff1f;算法交易费用是多少&#xff1f;算法交易哪些平台好&#xff1f; 最近算力、AI一直都比较火&#xff0c;现在KiMi和语料都已经出世&#xff0c;随着中国金融市场专业化程度和复杂度的提高&#xff0c;交易环节的每一步都对应巨大的增量空间。智能算…