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

目录

前言 

一:联合体(共用体)union

1.联合体类型的声明

2.联合体的特点

3.联合体大小的计算

4.联合体判断机器的大小端 

二:枚举enum 

1.概念

2.枚举的优点 

3.枚举的使用


接下来的日子会顺顺利利,万事胜意,生活明朗-----------林辞忧

前言 

在C语言中有内置类型和自定义类型之别,如char int,long,double 等等都是内置类型,而还有由struct,union,enum定义的自定义类型,接下来将介绍联合体union,和枚举类型enum

一:联合体(共用体)union

1.联合体类型的声明

1.像结构体一样,联合体也是由一个或者多个成员组成的,这些成员可以是不同的类型,但是编译器只为最大的成员分配足够的内存空间

2.联合体的特点是所有成员共用一块内存空间

3.给联合体中的一个成员赋值,其他成员也随之发生变化

#include <stdio.h>
union u
{int n;char c;
};
int main()
{union u a;printf("%zd",sizeof(union u));
}

会发现联合体的大小结果为4 

2.联合体的特点

联合的成员是共⽤同⼀块内存空间的,这样⼀个联合变量的⼤⼩,⾄少是最⼤成员的⼤⼩(因为联合 ⾄少得有能⼒保存最⼤的那个成员)。

从此可以看出,联合体的成员变量是共用一块内存单元的,修改一个成员变量,其他成员变量也会被修改 

内存上的改变为

3.联合体大小的计算

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

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

4.联合体判断机器的大小端 

二:枚举enum 

1.概念

枚举就是一一列举,将可能的结果一一列举,如星期,颜色等

其中enum color,enumweek称为枚举类型,其中的成员称为枚举常量 

这些常量也是有值的,默认是从0开始,依次往下递增,但也可以赋初始值

enum color
{ Blue,Red=5,Yellow=8
}

2.枚举的优点 

相对于枚举,我们还可以使用#define定义宏来实现枚举的功能,那么枚举相较宏的优点有

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

3.枚举的使用

enum color
{Red,Blue,Yellow
};
enum color cl=Red;//可以定义枚举变量并赋初始值

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

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

相关文章

Android Binder——Java服务注册(九)

对于 Java 端使用 Binder 服务,主要就是注册服务和获取服务,入口都是通过 ServiceManager.java 中的对应方法实现。这里我们就先介绍一下 Java 注册 Binder 服务的流程。 一、ServiceManager代理 无论是 ServiceManager.addService() 还是 ServiceManager.getService() 最终…

第9章 安全漏洞、威胁和对策(9.17)

9.17 移动设备(mobile device) 移动设备是指电池驱动的任何东西,通常不需要电源线就可以运行的任何东西。 备考时要把智能手机与移动设备、笔记本电脑、平板电脑乃至智能手表或计步器也考虑进来。 一些移动设备连典型的默认安全设置都做不到&#xff0c;更别提可供使用的安全…

C++ 类和对象(中篇)

类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。空类中什么都没有吗&#xff1f;并不是的&#xff0c;任何一个类在我们不写的情 况下&#xff0c;都会自动生成下面6个默认成员函数。 构造函数&#xff1a; 定义&#xff1a;构造函数是一个特殊的成员…

js的some函数

在JavaScript中&#xff0c;some() 是一个数组的方法&#xff0c;用于测试数组中是否至少有一个元素满足提供的函数。如果数组中有至少一个元素通过由提供的函数实现的测试&#xff0c;则它返回 true&#xff1b;否则返回 false。 以下是 some() 函数的基本语法&#xff1a; j…

【C语言】猜数字小游戏(并讲解随机数相关知识)

前言 一、游戏菜单 二、游戏逻辑 1.用户选择 2.开始游戏 2.1 生成1~100的随机数 总结 前言 本文讲解使用C语言写一个猜数字小游戏(1~100)&#xff0c;涉及到的语法为&#xff1a;循环、分支、随机数、函数 一、游戏菜单 一个游戏的最开始&#xff0c;往往是一个菜单&…

面试反问环节

目录 hr面反问技术面反问 一般反问3、4个问题 hr面反问 部门的工作氛围和领导风格是怎样的&#xff08;还有上下班作息时间等&#xff09;&#xff1f;部门对这个职位的期望是什么&#xff1f;部门的转正率大概有多少&#xff1f;实习生的薪资有多少&#xff1f;有房补吗&…

金融数据_Scikit-Learn决策树(DecisionTreeClassifier)实例

金融数据_Scikit-Learn决策树(DecisionTreeClassifier)实例 逻辑回归: 逻辑回归常被用于二分类问题, 比如涨跌预测。你可以将涨跌标记为类别, 然后使用逻辑回归进行训练。 决策树和随机森林: 决策树和随机森林是用于分类问题的强大模型。它们能够处理非线性关系, 并且对于特征…

Jetpack Bluetooth——更优雅地使用蓝牙

Jetpack Bluetooth——更优雅地使用蓝牙 蓝牙是安卓开发中非常常用的操作&#xff0c;但安卓经过这么多年的迭代&#xff0c;蓝牙的相关接口都经过了很多修改需要适配&#xff0c;还有的接口需要实现一堆函数。。。整套操作虽说不算复杂&#xff0c;但难免感觉不太舒服。 之前…

专题【双指针】【学习题】刷题日记

题目列表 11. 盛最多水的容器 42. 接雨水 15. 三数之和 16. 最接近的三数之和 18. 四数之和 26. 删除有序数组中的重复项 27. 移除元素 75. 颜色分类 167. 两数之和 II - 输入有序数组 2024.04.06 11. 盛最多水的容器 题目 给定一个长度为 n 的整数数组 height 。有 n 条垂…

阿里云服务器 篇二:搭建静态网站

文章目录 系列文章获取静态网站模板应用静态网站模板解压zip文件SCP命令上传文件其他上传文件的方法 系列文章 阿里云服务器 篇一&#xff1a;申请和初始化 阿里云服务器 篇二&#xff1a;搭建静态网站 获取静态网站模板 站长素材&#xff1a;网站中包括大量的免费模板&…

上传视频的核心代码

/*** 上传学习视频信息*/Log(title "上传学习视频信息", businessType BusinessType.INSERT)PostMapping("/uploadVideo")public AjaxResult add(HttpServletRequest request) {return toAjax(videoInfoService.insertVideoInfo(request));}/*** 上传学习…

PHP实现网站微信扫码关注公众号后自动注册登陆实现方法及代码【关注收藏】

在网站注册登陆这环节&#xff0c;增加微信扫码注册登陆&#xff0c;普通的方法需要开通微信开发者平台&#xff0c;生成二维码扫码后才能获取用户的uinonid或openid&#xff0c;实现注册登陆&#xff0c;但这样比较麻烦还要企业认证交费开发者平台&#xff0c;而且没有和公众号…

如何控制Docker容器退出后的自动重启行为?

在Docker中&#xff0c;可以通过以下两种方式来控制容器退出后的自动重启行为&#xff1a; 使用docker run命令时&#xff0c;通过设置--restart参数来指定容器退出后的重启策略。可以使用以下值之一&#xff1a; no: 默认值&#xff0c;容器退出后不会自动重启。always: 容器…

什么是EL表达式?怎么使用?

文章目录 一、什么是EL表达式1、命令格式&#xff1a;${作用域对象别名.共享数据} 二、EL表达式与作用域对象别名1、JSP文件可以使用的作用域对象2、EL表达式提供作用域对象别名3、EL表达式将引用对象属性写入到响应体4、EL表达式简化版 三、EL表达式与运算表达式四、EL表达式提…

【SQL】1890. 2020年最后一次登录(简单写法;窗口函数写法)

前述 sql 中 between 的边界问题 ---- between 边界&#xff1a;闭区间&#xff0c;not between 边界&#xff1a;开区间 在 sql 中&#xff0c; between 边界&#xff1a;闭区间not between 边界&#xff1a;开区间 题目描述 leetcode题目&#xff1a;1890. 2020年最后一…

【leetcode面试经典150题】16.接雨水(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

aardio教程五) 写Python风格的aardio代码(字符串篇)

前言 熟悉一个新的语言最麻烦的就是需要了解一些库的使用&#xff0c;特别是基础库的使用。 所以我想给aardio封装一个Python风格的库&#xff0c;Python里的基础库是什么方法名&#xff0c;aardio里也封装同样的方法名。 这样就不需要单独去了解aardio里一些方法的使用细节…

Lanelets_ 高效的自动驾驶地图表达方式

Lanelets: 高效的自动驾驶地图表达方式 附赠自动驾驶学习资料和量产经验&#xff1a;链接 LaneLets是自动驾驶领域高精度地图的一种高效表达方式&#xff0c;它以彼此相互连接的LaneLets来描述自动驾驶可行驶区域&#xff0c;不仅可以表达车道几何&#xff0c;也可以完整表述车…

.NET9 PreView2+.AOT ILC 的重大变化

RyuJIT 增强功能 1. 环路优化 (循环优化) 这种优化实际上是一种 for 循环叠加态的优化&#xff0c;for 循环叠加计算的过程中&#xff0c;会对其中部分变量进行感应。比如循环中放置 0 扩展 (第一个索引为 0)&#xff0c;这种优化灵感来源于 LLVM 标量演化。下面看例子&#…

每天一个数据分析题(二百五十四)

在大数据时代背景下&#xff0c;我们使用的数据主要包含两种类别&#xff0c;一种称为结构化数据&#xff0c;另一种称为非结构化数据。请问以下哪个选项属于非结构化数据&#xff1f; A. 利润表 B. 短视频 C. 产品库存表 D. 产品进货表 题目来源于CDA模拟题库 点击此处获…