カスタムタイプについて話す-共用体

ジョイント

  ユニオンは特別なカスタムタイプであり、このタイプで定義される変数には一連のメンバーも含まれます。これらのメンバーが同じスペースを共有するという特徴があるため、ユニオンとも呼ばれます。

ジョイントサイズの計算

  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