C——联合体/共用体

联合体

一片空间可以被不同类型数据共享,元素共用空间

  • 关键字:union
  • 定义类似于结构体;定义一个联合模板和联合变量
  • 空间大小由最大的数据类型的大小来确定
union Test{
	int idata;
	char cdata;
	double fdata;
	int idata2;
};

int main(){
	union Test u;
	printf("union size:%d\n",sizeof(u));		//unionde 大小
	printf("idata addr:%p\n",&u.idata);			//每个联合成员的地址
	printf("cdata addr:%p\n",&u.cdata);
	printf("cdata addr:%p\n",&u.fdata);
	
	return 0;
}

输出

union size:8
idata addr:0000003e753ffb7c	
cdata addr:0000003e753ffb7c
cdata addr:0000003e753ffb7c

由上得知联合体的大小空间时由double决定的,而且每个成员的地址都是同一个

  • 初始化只是对其中的一个变量进行初始化,或者可以使用其他联合体来进行初始化,赋值类型等同于原值类型,或者通过“.”运算符来对指定成员进行初始化。直接赋值初始化(val4),会初始化第一个出现的同类型成员
union Test val1;
val1.cdata = "H";
union Test val2 = val1;		//用其他联合体进行赋值
union Test val3 = {.fdata = 10.7}; //指定初始化
union Test val4 = {77};	//初始化了联合成员idata
  • 联合体使用时可以在同一空间进行不同类型数据的赋值,如下在结构体中,对于不同的结构体变量可以定义使用不同的数据类型,其中联合体中的数据通过对联合体的声明时就定义联合体变量inf,访问联合体成员时通过(假设struct Person结构体变量为teacher)teacher.inf.post来进行
struct Person{
   char name[MAX_STR];
   int id;
   char addr[MAX_STR];
   union {
   		int class;
   		char post[MAX_STR];
   }inf;
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值