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

【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.lryc.cn/news/368102.html

相关文章:

  • 基于Python定向爬虫技术对微博数据可视化设计与实现
  • 【QT5】<总览三> QT常用控件
  • Python中的生成器表达式(generator expression)
  • Responder工具
  • gitblit 环境搭建,服务器迁移记录
  • 硬盘坏了数据能恢复吗 硬盘数据恢复一般多少钱
  • 312. 戳气球 Hard
  • 推荐4个好用有趣的软件
  • GPT-4.0来袭:人工智能新纪元即将开启
  • Luminar Neo - AI智能修图软件超越PS和LR,简单易用又高效!
  • 【Linux】rsync远程数据同步工具使用
  • 以sqlilabs靶场为例,讲解SQL注入攻击原理【42-53关】
  • 单片机数码管时钟电路的设计
  • win10文件夹.git或者文件被隐藏的开启姿势
  • Paper速读-[Visual Prompt Multi-Modal Tracking]-Dlut.edu-CVPR2023
  • memory动态内存管理学习之unique_ptr
  • 1、项目介绍:为什么要做此项目。
  • 2024年6月7日第十五周下午学习英语六级大纲
  • 每日5题Day19 - LeetCode 91 - 95
  • wordpress里面嵌入哔哩哔哩视频的方法
  • Linux系统管理磁盘管理004
  • Flink窗口理论到实践
  • 279 基于matlab的粒子群集法对铁路电能质量控制系统的容量避行优化设计
  • 46-3 护网溯源 - 溯源报告编写
  • 微服务之基本介绍
  • 嘉立创面板制作不规则图案技巧
  • 如何使用Python中的collections模块提供的数据结构,如deque、Counter、OrderedDict等
  • 2024年道路安全员考试题库
  • 自建 Docker 镜像
  • php实现抖音小程序支付