C语言 -- 联合(共用体)union

C语言 -- 联合(共用体)union,第1张

C语言 -- 联合共用体)union

联合
  • 联合(共用体)union
    • 联合类型的定义
    • 联合的特点
    • 联合大小的计算

联合(共用体)union 联合类型的定义

联合也是一种特殊的自定义类型,这种类型定义的变量也包含也包含一系列的成员,特征是这些成员公用同一块空间(所以联合也叫共用体)。
比如:

//联合体
union Test
{
	int a;
	double b;
	char c;
};
void main()
{
	union Test t; //联合变量的定义
	printf("%dn", sizeof(t)); //8
}
联合的特点

联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联合至少得有能力保存最大的那个成员)

union Test
{
	char c; //char类型1字节
	int i; //int类型4字节
};
void main()
{
	union Test t;
	printf("sizeof(t) = %dn", sizeof(t)); //4
}
联合大小的计算
  • 联合的大小至少是最大成员的大小
  • 当最大成员大小不是最大对齐数的整数倍时,就要对其到最大对齐的整数倍
union Test1 //8
{
	char c[5]; //5
	int i; //4
};
union Test2 //16
{
	short s[7]; //14
	int i; //4
};
void main()
{
	union Test1 t1;
	union Test2 t2;
	printf("sizeof(t1) = %dn", sizeof(t1)); //8
	printf("sizeof(t2) = %dn", sizeof(t2)); //16
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5670514.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存