【C语言】联合union

  • 类似于struct结构的写法,但是不同的是struct内部的变量都是独立的,但是union的所有成员共享一个空间
  • 同一时间只有一个成员是有成效的
  • union的大小是其最大的成员 sizeof(union ...) = sizeof(每个成员的最大值)
  • 初始化时对第一个成员初始化
union Anelt {
	int i;
	int c
} elt1,elt2;
//union内部的i和c是占据同一个空间的
//或者 union Anelt elt1,elt2;
elt1.i = 4;//向地址上填入一个i的值
elt2.c = 'a';//向地址上填入一个c的值
elt2.i = 0xDEADBEEF//再向i中填入值就会抵掉前面c内部的值,但c此时还是有值的


【C语言】联合union_第1张图片

typedef union Anelt {
	//此时分配一处空间(跟随int和char中更大的那个)供i和ch同时使用
	int i;
	char ch[sizeof(int)];
} CHI;

int main(){
	CHI chi;
	int i;
	chi.i = 1234;
	for (i=0; i<sizeof(int); i++){
		printf("%02hhX\n", chi.ch[i]);
	}
	printf("\n");
	return 0;
}

【C语言】联合union_第2张图片

你可能感兴趣的:(C语言,c语言,开发语言)