共用体union

共用体类型的定义、变量定义和使用
union和struct很相似

#include<stdio.h>

struct mystruct
{
	int a;
	char b;
};


typedef union myunion
{
	int a;
	char b;
}GGG;


int main(void)
{
	//test 1
	struct mystruct s1;
	s1.a=23;
	printf("s1.b = %d\n",s1.b); // 0   无关的
	
	union myunion u1;  //
	s1.a = 23;
	printf("u1.b = %d\n",u1.b);  //23   u1.a和1u1.b是相关的
	printf("%d\n",sizeof(GGG));  //4
	printf("%d\n",sizeof(union myunion)); //4
	return 0;
}

结构体类似于一个包裹,成员是独立存在的,分布在内存的不用单元中,被大包在一起;共用体union各个成员是一体的,彼此不独立,使用同一个内存单元

union的sizeof测到的大小实际是union中各个元素里面占用内存最大的那个元素的大小,因为可以存下这个,就一定能存下其他元素
union中的元素不存在内存对齐问题,因为union中实际只有一个内存空间,都是从同一个地址开始的(union占用内存空间的首地址)

共用体union和结构体struct的区别
相同点是操作语法相同
不同是本质不同,struct是多个独立元素(独立内存空间)大包在一起;union是一个元素(一个内存空间)的多种不同解析方式

共用体的主要用途
union对同一个内存单元进行多种不同规则解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值