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字节

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

目录
相关文章
|
1月前
|
存储 编译器 C语言
c语言回顾-联合和枚举
c语言回顾-联合和枚举
28 4
|
6月前
|
存储 安全 编译器
C语言(13)----联合和枚举
C语言(13)----联合和枚举
40 1
|
6月前
|
存储 C语言
C语言 -共用体类型
C语言 -共用体类型
42 1
|
5月前
|
存储 C语言
C语言学习记录——联合体(共用体、特点、用法、联合体大小计算)
C语言学习记录——联合体(共用体、特点、用法、联合体大小计算)
77 2
|
5月前
|
C语言
【C语言】:枚举和联合
【C语言】:枚举和联合
25 0
|
6月前
|
存储 C语言
C语言——联合(共用体)~~详解
C语言——联合(共用体)~~详解
35 0
|
6月前
|
存储 C语言
C语言基础专题 - 通过案例历学 - 共用体
C语言基础专题 - 通过案例历学 - 共用体
49 0
|
11月前
|
存储 算法 大数据
C语言结构体、联合与枚举类型
C语言结构体、联合与枚举类型
|
编译器 Linux C语言
讲一讲C语言中的结构体、位段、枚举与联合
讲一讲C语言中的结构体、位段、枚举与联合
|
开发框架 .NET 编译器
C语言之枚举&联合
枚举顾名思义就是:列举 。 即把可能的取值一一列举出来