联合体的概念、特点、计算

简介: 联合体的概念、特点、计算

联合体的自定义

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

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

联合体中的成员的地址是一样的,可能所占字节大小不同。

在同一时间联合体只能用一个成员。

联合的特点

联合体的成员是公用同一内存空间的,这样一个联合变量的大小,至少是最大成员的大小,使得联合至少有能力保存最大的那个成员。

判断当前计算机的大小端储存

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;
}

联合体的计算

不同于结构体,联合体一般是成员中占用内存最大的字节是联合体的大小,但联合体的大小也是成员中最大对齐数的整数倍。

相关文章
|
2月前
|
Ubuntu 编译器 Linux
C语言中经典的结构体和联合体共用实例
C语言中经典的结构体和联合体共用实例
23 0
|
4月前
|
算法 C语言
化繁就简(结构体在算法中的运用)
化繁就简(结构体在算法中的运用)
15 0
|
11月前
|
存储 算法 编译器
抽丝剥茧C语言(高阶)结构体,枚举,联合+练习
抽丝剥茧C语言(高阶)结构体,枚举,联合+练习
|
11月前
|
存储 编译器 C语言
【C语言进阶】结构体、位段、枚举、以及联合(共用体)的相关原理与使用(上)
【C语言进阶】结构体、位段、枚举、以及联合(共用体)的相关原理与使用(上)
|
11月前
|
存储 算法 编译器
【C语言进阶】结构体、位段、枚举、以及联合(共用体)的相关原理与使用(下)
【C语言进阶】结构体、位段、枚举、以及联合(共用体)的相关原理与使用(下)
|
12月前
|
C语言
c语言分层理解(枚举和联合体)
1. 枚举 1.1 枚举定义 枚举的意思就是列举。列举的是可能取值。
67 0
|
Android开发 C++ 开发者
重温C与C++之结构体大小计算
C++进阶之结构体大小计算
78 0
|
存储 C语言
C语言-结构、联合、枚举
C语言-结构、联合、枚举
83 0
C语言-结构、联合、枚举
联合体的特点及其大小的计算
联合体的特点及其大小的计算
107 0
联合体的特点及其大小的计算