有时候同一个内存空间存放类型不同,不同类型的变量共享一块空间
像结构体,但是有区别
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;
}