关键字联合体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};  // 使用初始化器
相关推荐
海上Bruce9 分钟前
C primer plus (第六版)第十二章 编程练习第3题
c语言
SundayBear32 分钟前
零基础入门MQTT协议
c语言·单片机
我能坚持多久1 小时前
D16—C语言内功之数据在内存中的存储
c语言·开发语言
福楠2 小时前
C++ STL | map、multimap
c语言·开发语言·数据结构·c++·算法
极客小云2 小时前
【基于 PyQt6 的红外与可见光图像配准工具开发实战】
c语言·python·yolo·目标检测
Ethernet_Comm2 小时前
从 C 转向 C++ 的过程
c语言·开发语言·c++
爱编码的小八嘎6 小时前
c语言对话-1.auto_ptr再回忆
c语言
嵌入小生0076 小时前
基于Linux系统下的C语言程序错误及常见内存问题调试方法教程(嵌入式-Linux-C语言)
linux·c语言·开发语言·嵌入式·小白·内存管理调试·程序错误调试
W_a_i_T6 小时前
【Coding日记】菜鸟编程C语言100例——第一题
c语言·学习·编程思维·菜鸟编程
程序员_大白7 小时前
区块链部署与运维,零基础入门到精通,收藏这篇就够了
运维·c语言·开发语言·区块链