目次
ユニオンのカスタマイズ
共用体は特別なカスタム型です。この型で定義される変数には一連のメンバーも含まれます。特徴は、これらのメンバーが同じ空間を共有することです (したがって、共用体は共用体とも呼ばれます)。たとえば、次のコード
//联合类型的声明
union Un
{
char c;
int i;
};
//联合变量的定义
union Un un;
//计算这个变量的大小
printf("%d\n",sizeof(un));
共用体のメンバーのアドレスは同じですが、異なるバイト サイズを占める場合があります。
コンソーシアムは一度に 1 人のメンバーのみを使用できます。
組合の特徴
共用体のメンバーは同じメモリ空間を共有するため、共用体変数のサイズは少なくとも最大のメンバーのサイズとなり、共用体は少なくとも最大のメンバーを保存できます。
現在のコンピュータのビッグ エンディアン ストレージとスモール エンディアン ストレージを決定する
int main()
{
int a = 1;
if(*(char *)&a == 1)
printf("小端");
else
printf("大端");
return 0;
}
//利用联合体进行判断大小端,因为是要利用int类型的第一个字节进行判断
int panduan()
{
union Un
{
char c;
int a;
}u;
u.a = 1;
//if (u.c == 1)
//{
// return 1;
//}
//else
//{
// return 0;
//}
reuturn u.c;
}
int main()
{
int ret;
ret = panduan();
if (ret == 1)
{
printf("小端");
}
else
{
printf("大端");
}
return 0;
}
和集合の計算
構造体とは異なり、共用体は一般にメンバー間でメモリの最大バイトを占有し、それが共用体のサイズになりますが、共用体のサイズはメンバー間の最大アライメント数の整数倍でもあります。