共用体的介绍

   在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

猜你喜欢

转载自www.cnblogs.com/steven-dou/p/9651390.html