C语言之联合体

时间:2022-06-01 21:18:46

联合union是一个能在同一个存储空间存储不同类型数据的类型
联合体所占的内存长度等于其最长成员的长度,也有叫做共用体

联合体虽然可以有多个成员,但同一时间只能存放其中一种
对于联合体来讲最基本的原则是,一次只操作一个成员变量,如果这个变量是指针,那么一定是处理完指针对应的内存之后再来使用其他成员

union variant{
	int ivalue;
	char cvalue;
	double dvalue;
};

int main()
{
	union variant var;
	var.cvalue = 12;
	printf("%d\n", var.ivalue);
	printf("%p, %p, %p\n", &(var.cvalue), &(var.ivalue), &(var.dvalue));
	return 0;
}
variant.ivalue = 0x1234;//34 12 00 00
variant.cvalue = 1;//01 12 00 00
printf("%x", variant.ivalue);//输出结果为0x1201

所以在联合体中,基本不会使用指针