创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥c语言系列专栏:c语言之路重点知识整合 🔥
给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ
结构体 知识点:【c语言】结构体详解
一、共用体union
共用体:所有成员共享一段存储空间,但每个时间只有一个成员在使用

共用体的定义格式:
与结构体相似,union 类型名 { 不同数据类型 }
union aa
{
int a;
char b;
} ;
由于共用体中所有成员共享同一段内存空间,只有一个成员处于激活状态。因此,在读取或修改共用体中某个成员时,要确保该成员当前是处于激活状态的成员。
将65赋值给整型成员a之后,可以通过字符b读取它的ASCII码对应的字符值。

二、过程原理:
你认为下面的代码输出结果是什么?

#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, "TianXi Studio");
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 = 10 给i赋值后:

给 f 赋值后:

运行到字符串复制后:

最后一次使用共用体的成员,输出的值就是最后一次的值
在使用共用体时要注意只有一个成员处于激活状态,最后一次对共用体的任何成员操作都会影响这个激活状态的成员

如果在之前的aa共用体中的例子中添加一句:

运行结果就是成员b对共用体的操作,结果是输出一个 B 字符。
因此在使用共用体时,需要注意成员的切换和使用。
三、结构体和共用体的区别
结构体知识点:【c语言】结构体详解
结构体是由多个不同类型的数据组成的一个新数据类型,可用于存储和访问相互关联的数据。
共用体是多个不同类型的变量共享同一个内存空间。
结构体中的每个成员都有独立地址,而共用体成员则有相同地址,任何时刻只有一个成员处于激活状态
结构体内存的大小取决于其成员的总和
共用体内存的大小等于最大成员变量的大小

| 大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。 |
| 大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●) |
文章详细介绍了C语言中的共用体(Union)概念,包括其定义格式、工作原理和注意事项。通过示例代码展示了共用体如何存储和读取数据,以及与结构体的区别。强调在使用共用体时,所有成员共享存储空间,且只有一个成员活跃。同时,文章也提及了结构体的特性,即各成员拥有独立地址。
496

被折叠的 条评论
为什么被折叠?



