C语言必备知识共用体
共用体是一种 构造数据类型 ,有时候也称之为联合体。它的用途:使几个不同类型的变量共占一段内存。
共用体举例
union 共用体名
{
类型标识符 成员名;
类型标识符 成员名;
};
union data //共用体名字是data
{
int i; //整型数据
char ch; //字符型数据
float f; //浮点型数据
};
共用体特点
共用体变量任何时刻只有一个成员存在 共用体变量定义分配内存的长度=最长成员所占字节数
验证一下
#include < stdio.h > //printf scanf fputc
union data //共用体名字是data
{
int i; //整型数据
char ch; //字符型数据
float f; //浮点型数据
};
union data dddd;
int main(void)
{
printf("共用体内存是:%drn",sizeof(dddd));//实际打印的是float所占内存大小
printf("float内存是:%drn",sizeof(float));//实际打印的是float所占内存大小
printf("int内存是%drn",sizeof(int));
printf("char内存是:%drn",sizeof(char));
return0;
}
共用体变量里面内存的大小可以说跟float内存大小一样。也可以说是跟int大小一样,这里都是4个字节。
共用体变量的定义
//定义共用体的时候把变量写在共用体的后面 例如这里的a b都是共用体类型的变量名
union data
{
int i;
char ch;
float f;
}a,b;
//用共用体来定义 dddd就是共用体类型的变量名
union data dddd;
//共用体指针定义
union data *p;
//共用体数组定义
union data d[3];
//省略类型名字的 共用体变量 a b c
union
{
int i;
char ch;
float f;
} a,b,c;
测试代码如下
union
{
int i;
char ch;
float f;
} a,b,c;
int main(void)
{
printf("共用体内存是:%drn",sizeof(a));//实际打印的是float所占内存大小
printf("float内存是:%drn",sizeof(float));//实际打印的是float所占内存大小
printf("int内存是%drn",sizeof(int));
printf("char内存是:%drn",sizeof(char));
return0;
}
共用体变量的引用方式3种
- 共用体变量名.成员名
- 共用体指针名->成员名
- (*共用体指针名).成员名
跟结构体非常相似 变量访问用点、指针访问用箭头、星号可以把指针的内容取出。
dddd.i = 1;
printf("dddd.i = %drn",dddd.i);
dddd.ch = 'm';
printf("dddd.ch = %crn",dddd.ch);
dddd.f = 1.3;
printf("dddd.f = %frn",dddd.f);
注意:
- 同一个内存段可以用来存放几种不同类型的成员,但在每 一瞬时只能存放其中一种,而不是同时存放几种。
- 共用体变量中起作用的成员是最后一次存放的成员 只保留了1.3
在这里插入图片描述
- 共用体变量和它的各成员的地址都是同一地址
至此,共用体的知识点简单说完了。
附上代码:
#include < stdio.h > //printf scanf fputc
union data //共用体名字是data
{
int i; //整型数据
char ch; //字符型数据
float f; //浮点型数据
};
union data dddd;
union data *p;
int main(void)
{
dddd.i = 1;
dddd.ch = 'm';
dddd.f = 1.3;
printf("dddd.i = %drn",dddd.i);
printf("dddd.ch = %crn",dddd.ch);
printf("dddd.f = %frn",dddd.f);
printf("i地址 = %prn",&dddd.i);
printf("ch地址 = %prn",&dddd.ch);
printf("f地址 = %prn",&dddd.f);
return0;
}
!
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
内存
+关注
关注
8文章
3025浏览量
74047 -
C语言
+关注
关注
180文章
7604浏览量
136826 -
代码
+关注
关注
30文章
4788浏览量
68612
发布评论请先 登录
相关推荐
C语言-枚举、共用体
前面章节学习了结构体,结构体里可以按顺序存放相同或者不同的数据类型,每个成员都有它对应的存储空间。
而共用体和结构体一样也可以按顺序存放相
什么是C语言共用体?
;volatile unsigned char G: 1;volatile unsigned char DP: 1; } B; volatile unsigned char W;} ;这是个什么共用体?怎么称呼的?这是共用
发表于 10-25 02:32
结构体与共用体的区别
转载重点:共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。图形分析影响过程通过前面的讲解,我们知道结构体(Struct)是一种构造类型或复杂类型,它可以包含多个类型不同的成员。在
发表于 07-20 06:57
什么是C语言共用体类型
结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。而共用体变量所占的内存长度等于最长的成员的长度。
评论