共用体的介绍
在C语言中,允许几种不同类型的变量存放到同一段内存单元中,也就是使用覆盖技术,几个变量互相覆盖。这种几个不同变量共同占用一段内存的结构,被称为共用体类型结构,简称共用体。一般定义形式为:
union 共用体名
{
数据类型 成员名1;
数据类型 成员名1;
..........
数据类型 成员名n;
}变量名列表;
不能够直接引用共用体变量,只能引用共用体变量中的成员,引用方法如下:共用体变量名.成员名
共用体类型数据具有以下特点:
1、同一个内存段可以用来存放几种不同类型的成员,但是在每一瞬间只能存放其中的一种,而不是同时存放几种;在每一瞬间只有一个成员起作用,其他的成员不起作用,即不是同时都存在和起作用的。
2.共用体变量中起作用的成员是最后一次存放的成员;
3.共用体变量的地址和它各成员的地址都是同一地址;
不能对共用体变量名赋值,也不能企图引用变量名来得到一个值,并且不能够在定义共用体变量是对它进行初始化。
4.共用体类型可以出现在结构体类型的定义中,也可以定义共用体数组。反之,结构体也可以出现在共用体类型的定义中,数组也可以作为共用体的成员。
共用体的定义和使用:
#include <stdio.h>
main()
{
char i;
union date /*声明共用体数据类型*/
{
int day; /*共用体的变量成员*/
char month[12];
}a; /*定义共用体变量a*/
scanf("%c",&i); /*输入判断字符i*/
if(i == 'd')
scanf("%d",&a.date); /*若为d,则输入day成员的值*/
else
scanf("%d",&a.month);
if(i == 'd')
printf("a.day=%d\n",a.day); /*输出共用体变量a的某个成员*/
else
printf("a.day=%d\n",a.month);
}
运行结果:
d
30
a.day=30