printf 结构体_嵌入式C语言之——共用体union

本文介绍了C语言中的共用体(union)与结构体(struct)的区别,重点讨论了共用体的大小、访问方式及其与结构体的本质差异。通过实例代码展示了共用体成员如何共享内存空间,并解释了内存对齐对共用体大小的影响。
摘要由CSDN通过智能技术生成

引言

在C语言中,每个数据类型都有其特定的作用或使用场景。 前面我们详细的分析了数组,结构体,今天我们来讲讲共用体(union),所谓的共用体就是使用覆盖技术让数据成员之间相互覆盖,以实现不同数据成员共用同一段内存。先引出概念,接下来我们从共用体与其他的数据类型区别,到共用体类型如何定义,哪些场景会使用共用体等等,逐步分析。

共用体和结构体区别

共用体(union)和结构体(struct)在类型定义, 变量定义,使用方法上都非常相似:

//共用体类型定义union test{int achar b;};

变量的定义和使用:

//定义共用体变量t1union test t1;//使用共同体t1成员t1.a = 23;

那两者有什么区别呢?结构体好比是一个袋子,袋子里面装了各种各样的东西,每个东西都是独立存在的,占据了袋子体积; 而共用体的各个成员是一体的,彼此不独立,它们使用同一块内存空间,可以理解为:有时候是这个元素,有时候是另外一个元素(就像是一个多面人),有不同的形态,更准确的说是同一块内存空间有多种解释方式!通过以下示意图感受下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>