做网站用的,东莞网站建设排名,中国做w7的网站,微信购物网站开发C语言必备知识共用体
共用体是一种构造数据类型#xff0c;有时候也称之为联合体。 它的用途#xff1a; 使几个不同类型的变量共占一段内存。
共用体举例
union 共用体名
{ 类型标识符 成员名;类型标识符 成员名;
};union data //共用体名字是data{ int i; …C语言必备知识共用体
共用体是一种构造数据类型有时候也称之为联合体。 它的用途 使几个不同类型的变量共占一段内存。
共用体举例
union 共用体名
{ 类型标识符 成员名;类型标识符 成员名;
};union data //共用体名字是data{ int i; //整型数据char ch; //字符型数据float f; //浮点型数据};共用体特点
共用体变量任何时刻只有一个成员存在 共用体变量定义分配内存的长度最长成员所占字节数
验证一下
#include stdio.h //printf scanf fputcunion data //共用体名字是data{ int i; //整型数据char ch; //字符型数据float f; //浮点型数据};union data dddd;
int main(void)
{printf(共用体内存是%d\r\n,sizeof(dddd));//实际打印的是float所占内存大小printf(float内存是%d\r\n,sizeof(float));//实际打印的是float所占内存大小 printf(int内存是%d\r\n,sizeof(int));printf(char内存是%d\r\n,sizeof(char));return 0;
}共用体变量里面内存的大小可以说跟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(共用体内存是%d\r\n,sizeof(a));//实际打印的是float所占内存大小printf(float内存是%d\r\n,sizeof(float));//实际打印的是float所占内存大小 printf(int内存是%d\r\n,sizeof(int));printf(char内存是%d\r\n,sizeof(char));return 0;
}共用体变量的引用方式3种
共用体变量名.成员名共用体指针名-成员名(*共用体指针名).成员名
跟结构体非常相似 变量访问用点、指针访问用箭头、星号可以把指针的内容取出。
dddd.i 1;printf(dddd.i %d\r\n,dddd.i);dddd.ch m;printf(dddd.ch %c\r\n,dddd.ch);dddd.f 1.3;printf(dddd.f %f\r\n,dddd.f);
注意
同一个内存段可以用来存放几种不同类型的成员但在每 一瞬时只能存放其中一种而不是同时存放几种。共用体变量中起作用的成员是最后一次存放的成员 只保留了1.3 共用体变量和它的各成员的地址都是同一地址 至此共用体的知识点简单说完了。
附上代码
#include stdio.h //printf scanf fputcunion 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 %d\r\n,dddd.i);printf(dddd.ch %c\r\n,dddd.ch);printf(dddd.f %f\r\n,dddd.f);printf(i地址 %p\r\n,dddd.i);printf(ch地址 %p\r\n,dddd.ch);printf(f地址 %p\r\n,dddd.f);return 0;
}