创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥c语言系列专栏:c语言之路重点知识整合 🔥
给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ
结构体 知识点:【c语言】结构体详解
目录
- 一、共用体union
- 共用体的定义格式:
- 二、过程原理:
- 三、结构体和共用体的区别
一、共用体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语言】结构体详解
结构体是由多个不同类型的数据组成的一个新数据类型,可用于存储和访问相互关联的数据。
共用体是多个不同类型的变量共享同一个内存空间。
结构体中的每个成员都有独立地址,而共用体成员则有相同地址,任何时刻只有一个成员处于激活状态
结构体内存的大小取决于其成员的总和
共用体内存的大小等于最大成员变量的大小
大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。 |
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●) |