浅谈自定义类型-联合

联合

  联合是一种特殊的自定义类型,这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间,因此又叫做共用体。

联合大小的计算

  1. 联合的大小至少是最大成员的大小,这样才有能力保存最大的那个成员。

  2. 当最大的成员大小不是最大对齐数的整数倍的时候,就要对齐到最大对齐数的整数倍。

     #include <stdio.h>
     //联合的声明
     union Un
     {
     	short s[7];
     	int n;
     };
     int main()
     {
     	//联合的定义
     	union Un un;
     	//计算联合的大小
     	printf("%d\n", sizeof(union Un));//16
     	printf("%d\n", sizeof(un));//16
     	return 0;
     }
    

  因为我的计算机是有32根数据总线,因此,我的计算机的最大对齐数是4,我们找到联合中最大的成员short s[7],需要14个字节,然后补到最大对齐数4的整数倍,结果就是16。

使用联合判断计算机的大小端

//大端返回1,小端返回0,要求借用联合体的特性
union Data
{
	int i;
	char ch;
};

int isBigSystem()
{
	union Data d;
	//d.i = 0x00000001;
	d.i = 1;

	if (d.ch == 1)
	{
		return 0;
	}
	else
	{
		return 1;
	}
}

//小端机低位放低位,高位放高位,小端机
//大端机低位放高位,高位放低位,大端机
int main()
{
	printf("%d\n", isBigSystem());

	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43580319/article/details/112799236