C基础-联合体-2-应用场景集合

联合体节省内存空间

确保多个互斥的结构成员不会同时出现(浪费RAM)。

这个就很容易理解了,多个变量使用同一处内存。

应用:

  1. 判断系统用的是big endian 还是 little endian
  2. 强制类型转换(int 和 char数组转换,float 和 char数组转换)
  3. 用一个成员把值存储在一个联合中,然后用另一个成员查看内容。一般用在位域场景。
  4. //便于阅读代码。
  5. 在结构中储存与其成员有从属关系的信息。

联合体的应用举例:

场景1:判断系统用的是big endian 还是 little endian

`/*`

`使用联合体,判断系统是大端还是小端。`

`大端模式:高位对应低地址,低位对应高地址 ;小端模式:高位对应高地址,低位对应低地址 ;`

`union量的存放顺序是所有成员都从低地址开始存放的。`

`*/`
`#include <stdio.h>`
`#include <stdlib.h>`

`union AA`
`{
   `
	`int b;`
	`char a;`	
`};`

`void main(void)`
`{
   `
	`union AA temp={
   .b=1};`

	if(1 == temp.a)
	{
   
		printf("little endian.\n");
	}
	else
	{
   
		printf("big endian.\n");
	}	

`}`

应用场景2:强制类型转换(不同数据类型,进行转换)

/*
举例:强制类型转换
单片机应用场景:
AA: 将int的数据转换成4个字节数组,通过uart发出去。
CC: 将float的数据转换成4个字节数组,通过uart发出去。
*/

`#include <stdio.h>`
`#include <stdlib.h>`

`union AA`
`{
   `
	`int  b;`
	`char a[4];`	
`};`

`union<
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值