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

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

联合体的自定义

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

//联合类型的声明
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;
}

联合体的计算

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

相关文章
|
6月前
|
Ubuntu 编译器 Linux
C语言中经典的结构体和联合体共用实例
C语言中经典的结构体和联合体共用实例
58 0
|
安全 C++
【自定义类型:结构体,枚举,联合】内存对齐的原理和原因
【自定义类型:结构体,枚举,联合】内存对齐的原理和原因
79 0
|
存储 编译器 C语言
从头开始:自定义类型入门指南(结构体、位段、枚举、联合)(一)
从头开始:自定义类型入门指南(结构体、位段、枚举、联合)(一)
50 0
|
2月前
|
存储 算法 C++
【C++核心】结构体、共用体详解
这篇文章详细讲解了C++中结构体和共用体的概念、定义、使用场景和案例,包括结构体的创建、数组、指针、嵌套、函数参数传递,以及共用体的特点和应用实例。
28 4
|
存储
详解位段+枚举+联合(接结构体)(一)
详解位段+枚举+联合(接结构体)
55 0
|
存储 开发框架 .NET
从头开始:自定义类型入门指南(结构体、位段、枚举、联合)(二)
从头开始:自定义类型入门指南(结构体、位段、枚举、联合)(二)
45 0
|
存储
详解位段+枚举+联合(接结构体)(二)
详解位段+枚举+联合(接结构体)
49 0
|
存储 算法 编译器
抽丝剥茧C语言(高阶)结构体,枚举,联合+练习
抽丝剥茧C语言(高阶)结构体,枚举,联合+练习
|
存储 编译器 C语言
【C语言进阶】结构体、位段、枚举、以及联合(共用体)的相关原理与使用(上)
【C语言进阶】结构体、位段、枚举、以及联合(共用体)的相关原理与使用(上)
|
存储 算法 编译器
【C语言进阶】结构体、位段、枚举、以及联合(共用体)的相关原理与使用(下)
【C语言进阶】结构体、位段、枚举、以及联合(共用体)的相关原理与使用(下)