在 C 语言 中,共用体可以存放任意 数据类型 的组合,同时,共用体或者叫联合体,也可以用来存放任意数据类型的集合。
共用体的各个成员会占用不同的内存,互相之间没有影响,而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
union unionName{
fieldType1 filed1;
fieldType2 filed2;
fieldType3 filed3;
};
参数 | 描述 |
---|---|
union | 定义共用体使用的关键字。 |
unionName | 共用体名。 |
fieldType1 | 共用体成员变量的类型。 |
filed1 | 共用体成员变量名。 |
我们使用 union 定义了一个共用体 unionName,该共用体有三个字段,字段名分别为 filed1、filed2 和 filed3,它们的类型分别为 fieldType1、fieldType2 和 fieldType3。
该共用体的三个字段是相互影响的,修改其中任何一个字段的值,都会影响其他字段的值。
unionName.fileld;
参数 | 描述 |
---|---|
unionName | 共用体名。 |
fileld | 需要访问的成员。 |
如果是共用体,要访问其成员,那么与共用体一样,使用 .
。
C 语言共用体定义与使用
#include <stdio.h>
union UnionName{
int a;
float b;
char c;
};
void main()
{
printf("嗨客网(www.haicoder.net)\n\n");
union UnionName union1 = {100, 200, 79};
printf("Union a = %d, b = %f, c = %d\n", union1.a, union1.b, union1.c);
printf("\n");
return 0;
}
程序运行后,控制台输出如下图所示:
我们首先,定义了一个共用体 UnionName,该共用体有三个成员,即一个 int 类型的 a、一个 float 类型的 b 和一个 char 类型的 c。
接着,我们定义了一个共用体类型变量 union1 并初始化,最后,我们使用 printf 打印了共用体中的成员,此时,我们发现,共用体中的值已经乱了。
因此,共用体的成员不可以全部一起使用,只能单独使用其中某一个字段。
C 语言共用体定义与使用
#include <stdio.h>
union UnionName{
int a;
float b;
char c;
};
void main()
{
printf("嗨客网(www.haicoder.net)\n\n");
union UnionName union1;
union1.a = 100;
printf("Union a = %d, b = %.2f, c = %d\n", union1.a, union1.b, union1.c);
union1.b = 200;
printf("Union a = %d, b = %.2f, c = %d\n", union1.a, union1.b, union1.c);
union1.c = 97;
printf("Union a = %d, b = %.2f, c = %d\n", union1.a, union1.b, union1.c);
printf("\n");
return 0;
}
程序运行后,控制台输出如下图所示:
这次,我们可以看到,我们单独赋值的共用体的字段的值,都是正确的,但同时,我们给一个字段赋值时,会影响到另一个字段的值。
第一次,我们给 a 字段赋值,此时,我们打印出的 a 字段的值是正确的,此时的 b 字段和 c 字段的值都是随机的。
接着,我们给 b 字段赋值,此时 b 字段的值是正确的,但 a 字段的值和 c 字段的值都是随机的,最后,我们给 c 字段赋值,此时 c 字段的值是正确的,但 a 字段的值和 b 字段的值都是随机的。
在 C 语言 中,共用体可以存放任意数据类型的组合,同时,共用体或者叫联合体,也可以用来存放任意数据类型的集合。
共用体的各个成员会占用不同的内存,互相之间没有影响,而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。