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

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

1. 联合体类型的声明

2. 联合体的特点

3. 联合体大小的计算

4. 枚举类型的声明

5. 枚举类型的优点

6. 枚举类型的使用

欢迎关注 熬夜学编程

创作不易,请多多支持

感谢大家的阅读、点赞、收藏和关注

如有问题,欢迎指正

1. 联合体

1.1 联合体类型的声明

像结构体一样,联合体也是由一个或多个成员构成,这些成员可以是不同类型。

但是编译器只为最大的成员分配足够的内存空间。联合体特点是所有成员共用同一块内存空间。所以联合体也叫共同体。

给成员其中一个赋值,其他成员的值也跟着变化。

#include<stdio.h>

//联合类型的声明
union UN
{
    char ch;
    int i;
};

int main()
{
    //联合变量定义
    union UN un = { 0 };
    un.i = 1;
    printf("%zd", sizeof(un));
    return 0;
}

1.2联合体的特点

联合的成员是共用同一块内存空间,联合体的大小至少是最大成员的大小。

1.3 相同成员的结构体和联合体对比

1.4 联合体大小的计算

-> 联合体的大小至少是最大成员的大小。

->当最大成员大小不是最大对齐数的整数倍时,就要对齐到最大对齐数的整数倍。

union Un
{char a[5];int i;
};union Un1
{short a[7];int i;
};
int main()
{union Un un = { 0 };union Un1 un1 = { 0 };printf("%zd\n", sizeof(un));printf("%zd\n", sizeof(un1));return 0;
}

结果:

1.5 联合一个练习

使用联合体写程序,判断当前机器属于大端还是小端?(度试题)

int main()
{union Un{char c;int i;};union Un un = { 0 };un.i = 1;if (un.c == 1){printf("小端\n");}else{printf("大端\n");}return 0;
}

 

举一反三: 不使用联合体判断机器属于大小端字节序列?

int main()
{int a = 1;if (*((char*)&a)== 1){printf("小端\n");}else{printf("大端\n");}return 0;
}

4.枚举类型的声明

关键字:enum。

//枚举日期
enum Day
{
    Mon,
    Tues,
    Wed,
    Thur,
    Fri,
    Sat,
    Sun,
};

//枚举性别
enum Sex
{
    MALE,
    FEMALE,
    SECRET,
};

//枚举三原色
enum Color
{
    RED,
    GREEN,
    BLUE,
};

这些枚举的值默认从0开始,依次递增1,也可以对枚举类型赋初值。

如:

//枚举三原色
enum Color
{
    RED=3,
    GREEN=7,
    BLUE=8,
};

5. 枚举类型的优点

我们也可以使用#define定义常量,为什么还有枚举?

枚举的优点:

1. 增加代码的可读性和可维护性。

2. 和#define定义的标识符比较枚举有类型检查,更加严谨。

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

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

5. 枚举变量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用。

6 枚举类型的使用

enum Color
{
    RED=3,
    GREEN=7,
    BLUE=8,
}; 
enum Color cls = GREEN;//使用枚举常量为枚举变量赋值

相关文章:

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

1. 联合体类型的声明 2. 联合体的特点 3. 联合体大小的计算 4. 枚举类型的声明 5. 枚举类型的优点 6. 枚举类型的使用 欢迎关注 熬夜学编程 创作不易&#xff0c;请多多支持 感谢大家的阅读、点赞、收藏和关注 如有问题&#xff0c;欢迎指正 1. 联合体 1.1 联合体类型的声…...

【Cityengine】Cityengine生产带纹理的建筑模型导入UE4/UE5(下)

【Cityengine】Cityengine生产带纹理的建筑模型导入UE4/UE5&#xff08;下&#xff09; 一、导出数据&#xff08;2022中文版案例&#xff09;二、安装datasmith插件三、导入数据四、检查导入材质是否正常五、编辑替换材质六、安装模型编辑插件七、编辑替换建筑规则 一、导出数…...

详解51种企业应用架构模式

导读&#xff1a;企业应用包括哪些&#xff1f;它们又分别有哪些架构模式&#xff1f;世界著名软件开发大师Martin Fowler给你答案 01、什么是企业应用 我的职业生涯专注于企业应用&#xff0c;因此&#xff0c;这里所谈及的模式也都是关于企业应用的。&#xff08;企业应用还…...

【十年java搬砖路】Jumpserver docker版安装及配置Ldap登陆认证

Jumpserver docker 安装启动教程 拉取镜像 docker pull JumpServer启动进行前确保有Redis 和Mysql 创建jumperServer数据库 在MYSQL上执行 创建数据库 登陆MYSQL mysql -u root -p 创建Jumperserveri库 create database jumpserver default charset utf8mb4;可以为jumperSe…...

C\C++内存管理(未完结)

文章目录 一.C\C内存分布二.C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free三.C内存管理方式3.1.new/delete操作内置类型3.2.new和delete操作自定义类型 四.operator new与operator delete函数&#xff08;重要点进行讲解&#xff09;4.1. operator new与oper…...

一个小时搞定JAVA面向对象(5)——抽象与接口

文章目录 抽象抽象的注意事项static\final\private是否可以修饰抽象方法继承和抽象知识点回顾 接口接口实现总结抽象方法默认方法静态方法成员变量接口的特点接口和抽象类的区别 抽象 关键字: abstract 抽象方法: 修饰符 abstract 返回值类型 方法名(参数); 抽象类: public a…...

图像关键特征描述方法-小目标

图像关键特征描述方法主要包括以下几种: SIFT(尺度不变特征变换): SIFT是一种广泛使用的特征描述方法,它通过尺度空间和梯度方向直方图来描述图像中的关键点。SIFT特征描述具有尺度不变性和旋转不变性,对于光照和视角变化也具有一定的鲁棒性。 SURF(加速稳健特征): SURF…...

【qt15】windeployqt 安装依赖

debug模式vs可以使用qt插件新建qt文件 D:\Qt15\5.15.2\msvc2019\bin\windeployqt.exe Warning: Cannot find Visual Studio installation directory, VCINSTALLDIR is not set.D:\Qt15\5.15.2\msvc2019\bin\windeployqt.exe .\filecopier.exeWindows PowerShell Copyright (C) …...

DETR论文重点

DETR就是 DEtection TRansformer 的缩写。 论文原名&#xff1a;End-to-End Object Detection with Transoformers。 重点有两个&#xff1a;端到端、Transformer结构 论文概述 注意&#xff1a;斜体的文字为论文原文&#xff0c;其他部分内容则是为增进理解而做的解释。 …...

slf4j等多个jar包冲突绑定的排查方法使用IDEA的maven help解决

1.安装 2.使用maven help解决&#xff0c;找到对应包存在的冲突 使用exclude直接解决即可...

MySQL主从的延迟怎么解决呢?

以下是一些减少或解决MySQL主从延迟的策略&#xff1a; 优化查询和索引&#xff1a; 确保所有的查询都经过优化&#xff0c;以减少主服务器上的负载。使用合适的索引来加速查询速度&#xff0c;减少锁的时间。 分散复制负载&#xff1a; 使用多个从服务器分散读取负载。使用并…...

【一百】【算法分析与设计】N皇后问题常规解法+位运算解法

N皇后问题 链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 给出一个nnn\times nnn的国际象棋棋盘&#xff0c;你需要在棋盘中摆放nnn个皇后&#xff0c;使得任意两个皇后之间不能互相攻击。具体来说&#xff0c;不能存在两个皇后位于同…...

GPT-4:人工智能领域的新里程碑

近期&#xff0c;OpenAI推出了备受瞩目的GPT-4。作为GPT系列的最新成员&#xff0c;GPT-4在自然语言处理&#xff08;NLP&#xff09;领域再次刷新了记录&#xff0c;引发了广泛的关注和讨论。在试用GPT-4之后&#xff0c;我深感其在技术能力、应用场景等方面都取得了显著的进步…...

mysql inset bug

在 SQL 中&#xff0c;日期值需要用单引号包围&#xff0c;这是因为 SQL 将日期值视为字符串格式。数据库引擎在处理这些值时会将它们解析为适当的日期类型。如果不使用单引号&#xff0c;数据库引擎会将它们视为数字或列名&#xff0c;从而导致语法错误。 日期格式 MySQL 支…...

oracle查看序列

在Oracle数据库中&#xff0c;查看序列的方式主要有以下几种&#xff1a; 查看当前用户下的所有序列名称&#xff1a; sql复制代码 SELECT sequence_name FROM user_sequences; 查看所有用户的序列&#xff1a; sql复制代码 SELECT sequence_name FROM all_sequences; 查看…...

flask-slqalchemy使用详解

目录 1、flask-sqlalchemy 1.1、flask_sqlalchemy 与sqlalchemy 的关系 1.1.1、 基本定义与用途 1.2、flask_sqlalchemy 的使用 1.2.1、安装相关的库 1.2.2、项目准备 1.2.3、创建ORM模型 1.2.3.1、使用db.create_all()创建表的示例 1.2.3.2、创建多表关联ORM模型 1.…...

Scala学习笔记8: 包

目录 第八章 包1- 包2- 包的作用域3- 串联式包语句4- 包对象5- 引入end 第八章 包 在Scala中, 包(Package) 用于组织和管理代码, 类似与 Java 中的包 ; 包可以包含类、对象、特质等Scala代码, 并通过层次结构来组织代码 ; 可以使用 package 关键字来定义包, 并使用 . 来表示…...

分享一份糟糕透顶的简历,看看跟你写的一样不

最近看了一个人的简历&#xff0c;怎么说呢&#xff0c;前几年这么写没问题&#xff0c;投出去就有回复&#xff0c;但从现在开始&#xff0c;这么写肯定不行了。下面我给大家分享一下内容&#xff1a; 目录 &#x1f926;‍♀️这是简历文档截图 &#x1f937;‍♀️这是基本…...

VMware 三种网络模式

目录 一、网卡、路由器、交换机 二、虚拟网络编辑器 三、网络模式 1.桥接模式 通信方式 特点 配置 连通情况 使用场景 2.NAT模式 通信方式 特点 配置 连通情况 使用场景 3.仅主机 通信方式 特点 配置 连通情况 使用场景 一、网卡、路由器、交换机 网卡(Ne…...

红绿二分查找

《英雄算法零基础》之 二分查找 https://articles.zsxq.com/id_ib4xgs0cogic.html 在写模版之前我们先搞清楚二分查找是怎样运行的&#xff0c;我们把一个数组分成红绿两种颜色&#xff0c;可以理解为绿色就是符合情况的&#xff0c;红色就是不符合情况的&#xff08;类似红绿灯…...

新手避坑指南:用STM32F407和AS5600给无刷电机做FOC驱动,从硬件选型到代码调试全流程

STM32F407AS5600无刷电机FOC驱动实战&#xff1a;从零搭建到参数调优全解析 1. 硬件选型与电路设计避坑指南 选择适合的硬件组合是FOC驱动项目成功的第一步。对于刚接触无刷电机控制的开发者来说&#xff0c;市面上琳琅满目的开发板和电机型号往往让人眼花缭乱。经过多次项目…...

GHelper工具:解决华硕笔记本性能控制难题的轻量化方案

GHelper工具&#xff1a;解决华硕笔记本性能控制难题的轻量化方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Sc…...

新手入门指南:在快马平台上手把手实现openclaw基础功能

今天想和大家分享一个特别适合新手入门的机器人抓取项目——openclaw的基础实现。作为一个开源机器人抓取框架&#xff0c;openclaw结合了视觉识别和触觉反馈&#xff0c;是学习多模态控制的绝佳案例。我在InsCode(快马)平台上尝试实现了一个简化版本&#xff0c;整个过程对初学…...

AI辅助开发:描述需求即可自动生成流程图,比手动visio下载更智能

最近在做一个用户系统的设计&#xff0c;需要画登录注册的流程图。以前用Visio这类工具时&#xff0c;经常要手动拖拽各种图形、调整连线&#xff0c;特别费时间。这次尝试了用AI辅助生成&#xff0c;发现效率提升太多了&#xff01; 需求解析环节 我把需求描述成一段自然语言&…...

API的工作原理和机制

问题&#xff1a;API的工作原理和机制是什么&#xff1f; 这是一个技术解释类问题&#xff0c;需要清晰、系统地拆解。希望“深入”&#xff0c;所以不能停留在表面定义&#xff0c;需要从核心概念、交互模型、关键机制&#xff08;如协议、端点、请求响应结构、认证、状态等&…...

如何通过ImageToSTL实现图像三维化?解锁创意设计新可能

如何通过ImageToSTL实现图像三维化&#xff1f;解锁创意设计新可能 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the left side.…...

3大核心问题解决:B站视频处理全流程指南从下载到去水印的实战方案

3大核心问题解决&#xff1a;B站视频处理全流程指南从下载到去水印的实战方案 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水…...

科学护眼智能提醒:3个维度破解数字时代眼健康难题

科学护眼智能提醒&#xff1a;3个维度破解数字时代眼健康难题 【免费下载链接】ProjectEye &#x1f60e; 一个基于20-20-20规则的用眼休息提醒Windows软件 项目地址: https://gitcode.com/gh_mirrors/pr/ProjectEye 在数字时代&#xff0c;我们每天面对屏幕的时间急剧增…...

你的Windows Defender是否正在拖慢系统性能?3步彻底解决方案

你的Windows Defender是否正在拖慢系统性能&#xff1f;3步彻底解决方案 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mirro…...

QQ音乐加密格式解密完全指南:从原理到实践的全方位解决方案

QQ音乐加密格式解密完全指南&#xff1a;从原理到实践的全方位解决方案 【免费下载链接】qmcdump 一个简单的QQ音乐解码&#xff08;qmcflac/qmc0/qmc3 转 flac/mp3&#xff09;&#xff0c;仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump …...