C语言中的union
要想理解union,把下面这段代码运行结果搞懂即可
/*
* 1.共用体的成员共用同一个地址
* 2.成员变量类型中占用内存最大的变量所占用的内存为共用体所占用的内存
* 3.共用体成员初始化时只有最后一次成员初始化才会有效
*/
#include <stdio.h>
#include <string.h>
union U{
int a;
float b;
char s[10];
};
int main()
{
/*共用体内存占用大小*/
int a;
double b;
char s[10];
union U u1;
printf("int a = %d bytes\n",sizeof(a));
printf("flaot b = %d bytes\n",sizeof(b));
printf("char s[10] = %d bytes\n",sizeof(s));
printf("union U = %d bytes\n\n",sizeof(s));
/*共用体成员的调用*/
u1.a = 10;
u1.b = 13.5;
strcpy(u1.s,"HelloWorld");
printf("u1.a = %d\n",u1.a);
printf("u1.b = %f\n",u1.b);
printf("u1.s[10] = %s\n\n",u1.s);
/*共用地址*/
u1.a = 10;
printf("u1.a address is %x\n",&(u1.a));
u1.b = 13.5;
printf("u1.b address is %x\n",&(u1.b));
strcpy(u1.s,"HelloWorld");
printf("u1.s address is %x\n",&(u1.s));
return 0;
}
运行结果如图所示: