union 是C语言中可用的特殊数据类型,它允许将不同的数据类型存储在同一内存位置。
要定义union,您必须以与定义结构相同的方式使用 union 语句, union语句为您的程序定义了一个新数据类型,该数据类型具有多个成员变量。
union [union tag] { member definition; member definition; ... member definition; } [one or more union variables];
这是定义具有三个成员i,f和str的名为Data的union类型的方式-
union Data { int i; float f; char str[20]; } data;
现在, Data 类型的变量可以存储整数,浮点数或字符串。在上面的示例中,数据类型将占用20个字节的内存空间,因为这是字符串可以占用的最大空间。以下示例显示上述union占用的总内存大小-
#include <stdio.h> #include <string.h> union Data { int i; float f; char str[20]; }; int main( ) { union Data data; printf( "Memory size occupied by data : %d\n", sizeof(data)); return 0; }
编译并执行上述代码后,将产生以下输出-
Memory size occupied by data : 20
要访问Union的任何成员,我们使用成员访问运算符(.),您可以使用关键字 union 定义union类型的变量。
#include <stdio.h> #include <string.h> union Data { int i; float f; char str[20]; }; int main( ) { union Data data; data.i=10; data.f=220.5; strcpy( data.str, "C Programming"); printf( "data.i : %d\n", data.i); printf( "data.f : %f\n", data.f); printf( "data.str : %s\n", data.str); return 0; }
编译并执行上述代码后,将产生以下输出-
data.i : 1917853763 data.f : 4122360580327794860452759994368.000000 data.str : C Programming
在这里,我们可以看到Union的 i 和 f 成员的值已变化 ,因为分配给变量的最终值已占用内存位置。
现在,让我们再次查看同一示例,其中一次将使用一个变量,这是拥有Union的主要目的-
链接:https://www.learnfk.comhttps://www.learnfk.com/c-programming/c-unions.html
来源:LearnFk无涯教程网
#include <stdio.h> #include <string.h> union Data { int i; float f; char str[20]; }; int main( ) { union Data data; data.i=10; printf( "data.i : %d\n", data.i); data.f=220.5; printf( "data.f : %f\n", data.f); strcpy( data.str, "C Programming"); printf( "data.str : %s\n", data.str); return 0; }
编译并执行上述代码后,将产生以下输出-
data.i : 10 data.f : 220.500000 data.str : C Programming
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)