📅  最后修改于: 2023-12-03 14:48:11.055000             🧑  作者: Mango
在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有以下几个特点:
#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的存储位置。