关键字联合体union的定义和使用

联合体的定义

联合体的定义和结构体相同。

联合体成员共用存储空间,联合体占用的空间=最大长度的数据成员的长度。

c 复制代码
union State
{
 char sleep;
 char run;
 int suspend;
 double error;
}state_u;

以上例子,State表示联合体的名字,它相当于声明了一个联合体的模板,以后可以使用union+联合体名来声明一个联合体变量。state_u表示在创建联合体模板(State)的同时定义了一个联合体变量state_u。

例如:

c 复制代码
union State s1,s2; //声明两个联合体变量s1和s2

此外还可以使用typedef重新定义联合体模板(类型)

c 复制代码
//将联合体模板union data重新命名为stu_data,以后使用stu_data就可以直接定义联合体类型的变量。
typedef union data
{
   char* name;
   char age;
}stu_data;
//使用新名字stu_data创建两个变量stu_info1和stu_info2
stu_data stu_info1,stu_info2;

初始化联合体

方式1:

c 复制代码
stu_data a;
a.name = "xiao";
stu_data b=a;  //把一个联合初始化为另一个同类型的联合

方式2

c 复制代码
stu_data c={"ming"};  //直接赋值,会把第一个成员赋值给联合体,也就是说c表示 char* name

方式3

c 复制代码
stu_data d={.age=23};  // 使用初始化器
相关推荐
云泽8086 小时前
STM32 USART 详解(八):C I/O 串口重定向原理与实现
c语言·stm32·嵌入式硬件
ThornArmor6 小时前
重铸1996|肉体渲染:关节的裂缝:分段模型积木拼装与未成熟的 RSP 矩阵骨骼动画形变
c语言·汇编·c++·python·硬件架构·游戏机
T1mzhou6 小时前
ARM64 Linux 6.10 内核驱动(12):dd.c:probe/ remove、延迟 probe
linux·服务器·c语言·arm开发·arm
白色的北极熊7 小时前
c语言 scanf 输入流有空格,逗号 说明
c语言
Logic1018 小时前
C语言/数据结构位运算题解:异或XOR找出货船中的“独特载货量“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
xx~t11 小时前
嵌入式——51单片机3
linux·c语言·嵌入式硬件·51单片机
山下梅子酒22512 小时前
洛谷-入门-B2042
c语言
ysu_031412 小时前
08-二叉树遍历:四种方式详解
c语言·数据结构·算法·leetcode
ocean210312 小时前
2025-2026年C语言专题面试高频知识点洞察
c语言·面试·面试经验
Lzh编程小栈14 小时前
STM32 DMA深度解析|原理、完整工作流程、寄存器、中断联动,嵌入式面试高频考点(F1系列)
c语言·stm32·单片机·mcu·面试