作者:余小小
日期:2021-10-02
共用体类型概念
-
共用体是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型。
-
可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值:这个意思是说,共用体中的多个属性,只能有一个是有值的,具体是哪一个属性呢,就是占用空间最大的那个属性
-
在简单的说,共用体就是连体兄弟,可能你不连体,就只有一个,如果有多个,就多个脑袋,但是用的身体是一个,所以大哥吃饭,小弟就暂时下线。
-
必须使用关键字:union
-
但是任何时候只能有一个成员带有值
union:共同
学生会:the student‘s union
中文系学生会:the student’s union of the Department of the Chinese Lanuage and Literature
共用体类型结构
union 共用体数据类型名字
{
属性1,
属性2
...
member definition;
} 变量名字;
在共用体类型的最后一个分号之前,可以指定一个或多个共用体变量
union Data
{
int i;
float f;
char str[20];
} data;
相同的内存位置,可以存储多个多种类型的数据。
共用体占用的内存应足够存储共用体中最大的成员
#include <stdio.h>
#include <string.h>
union Data
{
int i;
float f;
char str[20];
};
int main( )
{
union Data data;
printf( "当前data共用体变量占用的空间是 : %d\n", sizeof(data));
return 0;
}
访问共用体成员
-
共用体变量打点调用
-
共用体变量打点调用
-
共用体变量打点调用
#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;
}
以看到共用体的 i 和 f 成员的值有损坏,因为最后赋给变量的值占用了内存位置,这也是 str 成员能够完好输出的原因。(大哥霸占了兄弟的产业)
既然每次只能有一个成员能够使用,那么就分批次让兄弟们使用
#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;
}
共用体和结构体的区别
我这里做一下个人的总结哦
-
结构体中的属性,都是单独的空间的哦,可以同时给结构体中的属性同时赋值
-
共用体中的属性,同一时刻只能有一个属性使用空间
-
共用体的关键字是union
-
结构体的关键字是struct
-
共用体和结构体都是变量打点调用属性获取属性值
-
结构体变量所占内存长度是其中最大字段大小的整数倍
-
共用体变量占用的长度是其中属性最大的空间,已经规定好了的哦
-
暂无评论内容