union的用法

注:下面的所有结果都是在小端机器上实现的。

union:多个变量共享一块内存

#include<stdio.h>
union ss
{
	int a;
	char b;
};
int main()
{
	ss aa;
	aa.a = 1;
	printf("%d %d\n", aa.a, aa.b);
	aa.b = 2;
	printf("%d %d", aa.a, aa.b);
	return 0;
}

  运行结果:

解释:下面是变量在内存中的存放位置

 

变量a内存大小是4个字节,所以存放在整个内存中,变量b内存大小是一个字节,所以只是存放在内存的低地址的第一个字节,小端机器上会把低位字节存放在低位地址上,当做aa.a=1;时在低地址的第一个字节上写入1,而这块内存是a与b共享的,所以此时b的值也会变成1.接着再做aa.b=2;对b重新赋值为2,此时会在b的 内存上写入2,同时也会覆盖掉原本内存上的1,这样当输出a的值时就变成了2,输出b的值也会变成2.

 

 

 

  

posted @ 2018-10-27 17:19  cs_wu  阅读(598)  评论(0编辑  收藏  举报