【C语言】轻松拿捏-联合体

谢谢观看!希望以下内容帮助到了你,对你起到作用的话,可以一键三连加关注!你们的支持是我更新地动力。
因作者水平有限,有错误还请指出,多多包涵,谢谢!


联合体

  • 一、联合体类型的声明
  • 二、联合体的特点
  • 三、联合体大小的计算
  • 四、联合的一个练习

一、联合体类型的声明

  
在这里插入图片描述

//联合体的关键字:union
//结构体的关键字:struct
//枚举的关键:enumstruct s
{char c;//0//1~3 浪费了int i;//4~7
};union un//联合体的声明
{char c;int i;
};int main()
{printf("%zd\n", sizeof(struct s));//8printf("%zd\n", sizeof(union un));//4return 0;
}

  


二、联合体的特点

  
  联合体的特点:联合的成员是共用同一块内存空间的,这样一个联合变量的大小至少是最大成员的大小(因为联合至少得有能力保存最大的那个成员),但不一定等于最大成员的大小
  
在这里插入图片描述
  虽然我们知道了它们是同一个起始地址,但是该如何具体的看到内存的变化呢?其实我们可以通过调试窗口观察

//代码2
#include <stdio.h>
//联合类型的声明
union Un
{char c;int i;
};
int main()
{//联合变量的定义union Un un = {0};un.i = 0x11223344;un.c = 0x55;printf("%x\n", un.i);return 0;
}

  变化之前
  
在这里插入图片描述
  变化之后
  
在这里插入图片描述
  
  通过上面的代码比较可以看出:联合的成员是共用同一块内存空间的
  


三、联合体大小的计算

  
联合体大小计算规则

  • 联合的大小至少是最大成员的大小。
  • 当最大成员大小不是最大对齐数的整数倍的时候,就要对齐到最大对齐数的整数倍
union Un
{short arr[7];//14    2 8 2//将数组拆开相当于有7个short的数据int i;//4            4 8 4//所以实际最大对齐数是4,那么联合体的整体大小是实际最大对齐数的整数倍//14不是,16是,那么浪费了2个字节
};int main()
{printf("%d\n", sizeof(union Un));//结果是16return 0;
}

四、联合的一个练习

  写⼀个程序,判断当前机器是大端?还是小端?

int check_sys()
{union{int i;char c;}un;un.i = 1;return un.c;//返回1是⼩端,返回0是⼤端
}int main()
{check_sys();return 0;
}

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

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

相关文章

DDMA信号处理以及数据处理的流程---随机目标生成

Hello&#xff0c;大家好&#xff0c;我是Xiaojie&#xff0c;好久不见&#xff0c;欢迎大家能够和Xiaojie一起学习毫米波雷达知识&#xff0c;Xiaojie准备连载一个系列的文章—DDMA信号处理以及数据处理的流程&#xff0c;本系列文章将从目标生成、信号仿真、测距、测速、cfar…

Redis 的一些关键知识点及示例

Redis 是一个开源的内存数据结构存储系统&#xff0c;广泛用于缓存、消息队列、实时分析等场景。以下是 Redis 的一些关键知识点及示例&#xff1a; 1. 基本数据类型 Redis 支持多种数据类型&#xff0c;每种数据类型都有其特定的操作命令。 1.1 字符串 (String) 字符串是 …

ToonCrafter - AI 生成动画越来越简单了,两张照片生成动画视频 本地一键整合包

动画制作对很多人来说应该都是一项非常专业且复杂的工作&#xff0c;需要学习专门的知识&#xff0c;掌握特定的工具&#xff0c;并且投入大量的时间精力才能得到成果&#xff0c;不过最近出现的一款 AI 动画制作工具 ToonCrafter 则有希望改变这一现状。它只需 2 张图像就生成…

如何使用Python中的collections模块提供的数据结构,如deque、Counter、OrderedDict等

Python 的 collections 模块提供了一些额外的数据结构&#xff0c;这些数据结构在内置的数据类型&#xff08;如列表、字典、集合等&#xff09;的基础上&#xff0c;增加了额外的功能或优化了性能。下面是如何使用 collections 模块中的 deque、Counter 和 OrderedDict 这三种…

[个人感悟] Java基础问题应该考察哪些问题?

前言 “一切代码无非是数据结构和算法流程的结合体.” 忘了最初是在何处看见这句话了, 这句话, 对于Java基础的考察也是一样. 正如这句话所说, 我们对于基础的考察主要考察, 数据结构, 集合类型结构, 异常类型, 已经代码的调用和语法关键字. 其中数据结构和集合类型结构是重点…

fl studio怎么设置中文及 2024年最新fl studio选购指南

FL Studio让你的计算机就像是全功能的录音室&#xff0c;漂亮的大混音盘&#xff0c;先进的创作工具&#xff0c;让你的音乐突破想象力的限制。zol提供FL Studio中文版下载。 FL Studio中文版下载软件简介 FL Studio 让你的计算机就像是全功能的录音室&#xff0c;漂亮的大混…

开发没有尽头,尽力既是完美

最近遇到了一些难题&#xff0c;开发系统总有一些地方没有考虑周全&#xff0c;偏偏用户使用的时候“完美复现”了这个隐藏的Bug...... 讲道理创业一年之久为了生存&#xff0c;我一直都有在做复盘&#xff0c;复盘的核心就是&#xff1a;如何提升营收、把控开发质量&#xff0…

Springboot 上传图片及访问

1、yml配置 下面的服务器根据自己所用的进行调整即可 upload:file:# 这是linux服务器的上传路径# location: file:/mnt/www/pp/test_ai/image#这是windows服务器的上传路径location: file:d://image/#这是访问的虚拟路径path: /temp-image/** fileServer: #这是访问图片的…

SQL Server中的CTE和临时表优化

在SQL Server中&#xff0c;优化查询性能是数据库管理的核心任务之一。使用公用表表达式&#xff08;CTE&#xff09;和临时表是两种重要的技术手段。本文将深入探讨CTE如何简化代码&#xff0c;以及临时表如何优化查询性能。通过实例和详尽解释&#xff0c;我们将展示这两种技…

Linux基础 (十五):TCP 协议特点和UDP协议

上一节&#xff0c;我们学习了TCP协议的服务器-客户端的编程流程以及对中间的过程进行了详细的讨论&#xff0c;那么&#xff0c;这一节&#xff0c;我们对于TCP协议的特点进行进一步的分析&#xff0c;这也是面试的重点和难点。 目录 一、TCP 协议特点 1.1 连接的建立与断…

单片机数码管时钟电路的设计

5 调试 数码管的引脚1&#xff5e;4&#xff0c;a&#xff5e;g以及小数点的排列都不是连续的&#xff0c;这就意味着难免需要飞线。数码管是分共阴和共阳的&#xff0c;起初我错把原理图中的共阳数码管当成了共阴数码管&#xff0c;焊上去了之后才发现&#xff0c;为了避免拆卸…

Unity Vuforia

首先在unity2019版本里可以在windows->PackageManager里搜Vuforia EngineAR; &#xff08;unity2021版本里搜不到&#xff09; 在官网注册账号&#xff1a; 添加识别图等&#xff1b; 将导出的unitypackage包导入unity中。 unity里导入package之后&#xff0c;新建场景&am…

web前端MVC框架:深入剖析与实战应用

web前端MVC框架&#xff1a;深入剖析与实战应用 在web前端开发的浩瀚星空中&#xff0c;MVC框架以其独特的魅力引领着开发者们探索未知的领域。MVC&#xff0c;即Model-View-Controller&#xff0c;是一种将应用程序的业务逻辑、数据模型和用户界面分离的设计模式。在web前端领…

Golang——gRPC与ProtoBuf介绍

一. 安装 1.1 gRPC简介 gRPC由google开发&#xff0c;是一款语言中立&#xff0c;平台中立&#xff0c;开源的远程过程调用系统。gRPC客户端和服务器可以在多种环境中运行和交互&#xff0c;例如用java写一个服务器端&#xff0c;可以用go语言写客户端调用。 1.2 gRPC与Protob…

④-1单细胞学习-cellchat单数据代码补充版

目录 1&#xff0c;数据输入及处理 ①载入包和数据 ②CellChat输入数据准备 ③构建CellChat对象 ④数据预处理 2&#xff0c;细胞通讯预测 ①计算细胞通讯概率 ②提取配受体对细胞通讯结果表 ③提取信号通路水平的细胞通讯表 ④细胞互作关系可视化 1&#xff09;细胞…

IO流(缓冲流)

1.字节缓冲流 原理&#xff1a;字节缓冲输入流自带8KB缓冲池;字节缓冲输出流自带8KB缓冲池 public static void main(String[] args) throws IOException {try(InputStream is new FileInputStream("D:\\pt\\123.jpg");//1.定义一个字节缓冲输入流包装原始的字节输…

JAVA:在IDEA引入本地jar包的方法并解决打包scope为system时发布无法打包进lib的方案

一.引入本地Jar包的步骤 有时maven依耐的包是本地的jar包,此时需要进行以下步骤设置。 步骤1.在pom.xml中添加插件设置,将system范围包含进来,此设置是为了在打包时,本地jar包自动生成到部署包里。(若无法打进包,请参考下文的方案二) <plugin><groupId>org.…

Modbus主站和从站的区别

Modbus主站,从站 在工业自动化领域&#xff0c;Modbus是一种常用的通信协议&#xff0c;用于设备之间的数据交换。在Modbus通信中&#xff0c;主站和从站是两个关键的角色。了解主站和从站之间的区别对正确配置和管理Modbus网络至关重要。 Modbus主站的特点和功能 1.通信请求发…

硬盘坏了数据能恢复吗 硬盘数据恢复一般多少钱

在数字化时代&#xff0c;我们的生活和工作离不开电脑和硬盘。然而&#xff0c;硬盘故障是一个常见的问题&#xff0c;可能会导致我们的数据丢失。当我们的硬盘坏了&#xff0c;还能恢复丢失的数据吗&#xff1f;今天我们就一起来探讨关于硬盘坏了数据能恢复吗&#xff0c;硬盘…

Polar Web【困难】上传

Polar Web【困难】上传 Contents Polar Web【困难】上传探索&思路&效果进入环境绕过过程Webshell连接 EXPPayload 总结 探索&思路&效果 本题的主题可见为文件上传&#xff0c;详情在破解的过程中逐步发掘&#xff1a; 进入环境&#xff0c;为一个文件上传功界面…