C - 联合(Unions)

首页 / C语言 / Unions

unionC语言中可用的特殊数据类型,它允许将不同的数据类型存储在同一内存位置。

定义Union

要定义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;
}

编译并执行上述代码后,将产生以下输出-

链接:https://www.learnfk.com/c-programming/c-unions.html

来源:LearnFk无涯教程网

Memory size occupied by data : 20

访问Union

要访问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;
}

编译并执行上述代码后,将产生以下输出-

链接:https://www.learnfk.com/c-programming/c-unions.html

来源:LearnFk无涯教程网

data.i : 1917853763
data.f : 4122360580327794860452759994368.000000
data.str : C Programming

在这里,我们可以看到Union的 i 和 f 成员的值已变化 ,因为分配给变量的最终值已占用内存位置。

现在,让我们再次查看同一示例,其中一次将使用一个变量,这是拥有Union的主要目的-

#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;
}

编译并执行上述代码后,将产生以下输出-

链接:https://www.learnfk.com/c-programming/c-unions.html

来源:LearnFk无涯教程网

data.i : 10
data.f : 220.500000
data.str : C Programming

这一章《C - 联合(Unions)》你学到了什么?在下面做个笔记吧!做站不易,你的分享是对我们最大的支持,感谢!😊

相关文章

从0开始做增长 -〔刘津 - 44讲〕

安全攻防技能30讲 -〔何为舟 - 41讲〕

Redis核心技术与实战 -〔蒋德钧 - 53讲〕

徐昊 · TDD项目实战70讲 -〔徐昊 - 70讲〕

幂函数给出的答案与 C 中的 math.pow 函数不同

在 C 中使用数组而不是向量

Gnuplot 和 C - 绘制不同的符号/ colored颜色

为什么启用优化时 GCC 11 编译器会产生奇怪的输出?

为什么 memcpy() 随机不复制正确的值?

确定在嵌入式 C 中运行时使用哪个变量

视频推荐〔57.自定义数据类型-位段(C语言程序设计教程谭浩强 c语言谭浩强视频教程 c语言零基础入门教程 学习c语言 c语言视频教程 c语音 C语言教程 C语言编程项目〕

更多视频 »
好记忆不如烂笔头。留下你的足迹吧 :)