📜  Union in - C 编程语言(1)

📅  最后修改于: 2023-12-03 14:48:11.055000             🧑  作者: Mango

Union in C 编程语言

简介

在C语言中,union(联合体)是一种特殊的数据类型。它允许在同一内存位置存储不同的数据类型,并且只会有一个成员被使用。

union语法如下:

union union_name {
  member1_type member1_name;
  member2_type member2_name;
  .
  .
  .
  memberN_type memberN_name;
} union_variable;

其中,union_name为自定义的联合体名称,member_type为每个成员变量的数据类型,member_name为成员变量的名称,union_variable为定义的联合体变量。

特点

union有以下几个特点:

  1. 一个union变量会占用其最大成员变量所需要的字节数。
  2. 只有一个成员可以被使用,但是不同的成员可以被不同的方法调用。
  3. 可以被用来在不同的数据类型之间进行强制类型转换。
示例
#include <stdio.h>

union union_example {
  int int_value;
  double double_value;
  char char_value;
};

int main() {
  union union_example example;
  
  example.int_value = 10;
  printf("int_value: %d\n", example.int_value);
  
  example.double_value = 3.1415;
  printf("double_value: %lf\n", example.double_value);
  
  example.char_value = 'a';
  printf("char_value: %c\n", example.char_value);
  
  return 0;
}

输出如下:

int_value: 10
double_value: 3.141500
char_value: a

在上面的例子中,我们创建了一个名为union_example的联合体,其中包含int、double和char类型的成员变量。我们创建了一个名为example的联合体变量,并通过赋值给不同的成员变量来查看它们不同的输出结果。 由于只有一个成员被使用,因此union在内存中只占用了int和double成员变量所需要的字节数。 特别地,赋值给char形成常量的案例中,如果定义多个成员变量中有一个char值,则char值将覆盖int和double的存储位置。