关键字联合体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};  // 使用初始化器
相关推荐
BUG_MeDe9 小时前
json格式字符串解析的简单使用 libjson-c
c语言·开发语言·json
一叶落43810 小时前
LeetCode 50. Pow(x, n)(快速幂详解 | C语言实现)
c语言·算法·leetcode
至为芯13 小时前
IP2075_34S至为芯支持C口快充的30W功率AC/DC芯片
c语言·开发语言
这波不该贪内存的18 小时前
HTTP通信与多线程服务器实战
c语言
雨落在了我的手上18 小时前
C语言之数据结构初见篇(2):顺序表之通讯录的实现(续)
c语言·开发语言·数据结构
码不停蹄Zzz19 小时前
对内存堆栈管理的简单理解[C语言]
c语言·开发语言
AMoon丶21 小时前
C++基础-类、对象
java·linux·服务器·c语言·开发语言·jvm·c++
为搬砖记录21 小时前
杰理AC695N soundbox 3.1.2打开ble宏的编译bug
c语言·开发语言·单片机·bug
一叶落43821 小时前
【LeetCode 172】阶乘后的零(C语言详解 | 数学规律 + 对数时间复杂度)
c语言·数据结构·算法·leetcode·动态规划
自信1504130575921 小时前
数据结构初阶——二叉树之——堆的实现
c语言·数据结构·算法