一、union中的成员变量
变量a、变量b占用同一片内存空间。改变a的值,b的值也会改变;反之亦然。OUT类型变量占用的内存空间等于int变量占用的内存空间。
union OUT {
int a;
int b;
};
测试代码如下:
int main()
{
OUT res;
res.a = 1;
printf("res.a = %d\n", res.a);
printf("res.b = %d\n", res.b);
res.b = 9;
printf("res.a = %d\n", res.a);
printf("res.b = %d\n", res.b);
printf("sizeof(int) = %d\n", sizeof(int));
printf("sizeof(OUT) = %d\n", sizeof(OUT));
return 0;
}
测试结果如下:
res.a = 1
res.b = 1
res.a = 9
res.b = 9
sizeof(int) = 4
sizeof(OUT) = 4
二、struct中的成员变量
为了辨别union、struct的差异,将OUT声明为结构体。
struct OUT {
int a;
int b;
};
测试代码如下:
int main()
{
OUT res;
res.a = 1;
printf("res.a = %d\n", res.a);
printf("res.b = %d\n", res.b);
res.b = 9;
printf("res.a = %d\n", res.a);
printf("res.b = %d\n", res.b);
printf("sizeof(int) = %d\n", sizeof(int));
printf("sizeof(OUT) = %d\n", sizeof(OUT));
return 0;
}
结果如下:
res.a = 1
res.b = 0
res.a = 1
res.b = 9
sizeof(int) = 4
sizeof(OUT) = 8