C语言联合(共用体)

简介: C语言联合(共用体)

1.联合类型的定义

联合也是一种特殊的自定义类型

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

 

//联合类型的声明
union Un
{
char c;
int i;
};
//联合变量的定义
union Un un;
//计算连个变量的大小
printf("%d\n", sizeof(un));

2.联合的特点

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

合至少得有能力保存最大的那个成员)

 

union Un
{
  int i;
  char c;
};
int main()
{
  union Un un;
  printf("%d\n", &(un.i));
  printf("%d\n", &(un.c));
  un.i = 0x11223344;
  un.c = 0x55;
  printf("%x\n", un.i);//0x11223355
}

输出后可以发现un.i和un.c地址相同,且un.c也改变了un.i的值更加证明了公用同一块空间.

3.联合大小的计算

(1)联合的大小至少是最大成员的大小。

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

比如:

union Un1
{
char c[5];
int i;
};
union Un2
{
short c[7];
int i;
};
printf("%d\n", sizeof(union Un1));//8字节
printf("%d\n", sizeof(union Un2));//16字节

结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!

目录
相关文章
|
6天前
|
存储 编译器 C语言
C语言共用体
C语言共用体
22 0
|
6天前
|
存储 C语言
c语言中的共用体
c语言中的共用体
18 0
|
6月前
|
存储 C语言
20 C语言 - 共用体
20 C语言 - 共用体
28 0
|
6天前
|
存储 C语言
C语言基础专题 - 通过案例历学 - 共用体
C语言基础专题 - 通过案例历学 - 共用体
26 0
|
5月前
|
存储 算法 大数据
C语言结构体、联合与枚举类型
C语言结构体、联合与枚举类型
|
6月前
|
编译器 Linux C语言
讲一讲C语言中的结构体、位段、枚举与联合
讲一讲C语言中的结构体、位段、枚举与联合
|
9月前
|
存储 C语言
C语言中的“三体”大佬们知道是什么吗? —— 结构体、枚举、联合体(二)
C语言中的“三体”大佬们知道是什么吗? —— 结构体、枚举、联合体
174 1
|
9月前
|
编译器 C语言 C++
C语言中的“三体”大佬们知道是什么吗? —— 结构体、枚举、联合体(一)
C语言中的“三体”大佬们知道是什么吗? —— 结构体、枚举、联合体
76 1
|
9月前
|
编译器 C语言 C++
【C语言进阶(七)】自定义类型--结构体,位段,联合(二)
【C语言进阶(七)】自定义类型--结构体,位段,联合(二)