【时时三省】(C语言基础)共用体/联合体

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省

共用体

共用体的核心就是

一种数据可能有多种类型

就比如 如果要用一个变量存放钱,钱有很多种类型,可以是10,或者10.5,或者10万,有int型和double型,还有字符型,这个时候就可以用到共用体

他的格式和结构体很像

定义的格式是:

绿色的是这个共用体的名字,可以自定义

使用的格式是:

而且定义共用体的时候,前面也可以加typedef关键字,可以给这个共用体起别名,后面使用的时候就可以直接用别名来定义了

共用体的特点

共用体,也叫联合体,共同体

所有的变量都使用同一个内存空间

所占的内存大小=最大成员的长度(也受内存对齐影响)

(细节:

以最大的单个成员的长度为准

总大小一定是最大成员的整倍数)

每次只能给一个变量进行赋值,因为第二次赋值时会覆盖原有的数据

共用体和结构体的区别

结构体:一种事物包含多个属性

共用体:一个属性有多种类型

上面是代码层面的区别

内存里面的区别:

存储方式:

结构体:各存各的

共用体:存一起,多次存会覆盖

内存占用:

结构体:各个变量的总和(受内存对齐影响)

共用体:最大类型(受内存对齐影响)

相关推荐
free-elcmacom4 小时前
C语言字符指针与字符串字面量——从一道“剑指 Offer”笔试题说起
c语言·visual studio
free-elcmacom9 小时前
C语言指针进阶——指针数组模拟二维数组,以及二级指针到底怎么理解
c语言·visual studio code
山下梅子酒22510 小时前
洛谷-入门-B2049
c语言
剑指offer.12 小时前
嵌入式硬件-ARM芯片的启动
c语言·嵌入式硬件·嵌入式
Logic10113 小时前
C语言/数据结构动态规划题解:Kadane算法求最大子数组和——O(n)时间O(1)空间
c语言·数据结构·动态规划·贪心·时间复杂度·算法题·最大子数组和
雷✘14 小时前
C 程序从源文件到运行:预处理、编译、汇编、链接重定位与执行环境
c语言
Logic10114 小时前
C语言/数据结构位运算题解:异或XOR找出数据表中的“独特编号“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
endeavor1215 小时前
BootLoader与OTA学习(三)
c语言·stm32
布莱克60516 小时前
理解内存泄漏:成因、发现方法与解决策略(C++ 举例)
c语言·c++·内存泄漏
Logic10117 小时前
C语言/数据结构位运算题解:异或XOR找出英雄升级系统中的“独特经验值“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质