C语言——union共用体/联合体

有时候同一个内存空间存放类型不同,不同类型的变量共享一块空间

像结构体,但是有区别
1、结构体元素有各自单独空间,共用体元素共享空间,空间大小由最大类型确定
同一块空间,有时候存放char类型、有时候存放int型,有时候存放double型
2、结构体元素互不影响,共用体赋值会导致覆盖(一定要注意)

#include<stdio.h>

struct Testt
{
int data;
char cdata;
double ddata;
};

union Testu
{
int data;
char cdata;
double ddata;//double占用空间8字节
};

int main()
{
struct Testt t1;
union Testu u1;
printf("结构体t1=%d\n",sizeof(t1));
printf("共用体u1=%d\n",sizeof(u1));

t1.data=10;
t1.cdata='c';
t1.ddata=20.2;
printf("data:%p,%d\n",&t1.data,t1.data);
printf("cdata:%p,%c\n",&t1.cdata,t1.cdata);
printf("ddata:%p,%f\n",&t1.ddata,t1.ddata);

//u1.data=10;
u1.ddata=18.8;
//printf("data:%d\n",u1.data);
//printf("data:%p,%d\n",&u1.data,u1.data);
//printf("cdata:%p,%d\n",&u1.cdata);
printf("ddata:%p,%f\n",&u1.ddata,u1.ddata);
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值