C语言 共用体

 

  1、 什么是共用体?

    在共用体里面可以定义多个变量,数量没有限制,但是,无论定义多少个变量,共用体所分配的内存空间,只会

  根据长度最大的那个变量去分配,所以,在同一个时刻里面,只会有一个变量的值存在于所分配的内存空间中,

  也就是说,在同一个时刻里面只,共用体中只有一个变量起作用。

 

  2、共用体定义的语法格式1

     union 共用体名字

     {

      成员1;

          ...

       成员n;

    }变量1,变量2,..变量n;

 

  语法格式分析:

  (1)以关键字union开始。

  (2)共用体名字,按照变量名命名规则定义即可。

  (3)一对大括号。

  (4)大括号中可以定义共用体中要存放的成员,而成员的定义就是变量的定义,成员数量不限。

  (5)大括号后所定义的就是共用体变量,多个变量之间以逗号分隔。

 

  3、共用体定义的语法格式2

     union 共用体名字

     {

      成员1;

      ...

      成员n;

     };

     union  共用体名字 变量1,变量2,..变量n;

 

  语法格式分析:

  (1)以关键字union开始。

  (2)共用体名字,按照变量名命名规则定义即可。

  (3)一对大括号。

  (4)分号,说明共用体定义结束。

  (5)以union开始,后面接着写上已经定义的共用体名字,然后,再写上要定义的共用体变量,

     每个变量之间以逗号分隔。

 

  4、例子:   

        union UN  //定义了共用体UN

        {

         int i;    

         char c;

         float f;        

        }; 

        union UN a,b,c;  

 

  5、共用体变量的引用语法格式

 

   共用体变量名.共用体中的成员名

 

  语法格式分析:

  (1)已经定义的共用体变量名。

  (2)一个点号运算符,格式要求不能省略。

  (3)共用体中的成员名字。

 

  例子:

    //使用上面4、例子中定义的UN共用体所定义的变量

     a.i; //通过共用体变量a调用了成员 i 。

 

 

  6、共用体的特性总结

  (1)共用体虽然可以存放多个成员,但是,每一次只可以有一个成员起作用。

  (2)共用体变量调用成员时,只有最后调用的成员起作用。

  

  例子:

    //使用上面例子中定义的UN共用体所定义的变量

     a.x = 10;//通过共用体变量a调用了成员x,并赋值为10。

     a.y = 'z';//通过共用体变量a调用了成员y,并赋值为字符'z'。

     a.z = 3.5;//通过共用体变量a调用了成员z,并赋值为1.5。

 

  例子分析:

     在上面的3行代码中,最后是通过共用体变量a调用了成员z,并赋值了3.5,因为,它是最后

  调用的,所以,只有a.z起作用,其它两行代码已经没有意义,因为,第一个特性说明了,每一次

  只可以有一个成员起作用。

 

 

  (3)共用体变量的内存地址与共用体中的所有成员的内存地址是一样的。

 

     例如:使用上面例子中定义的UN共用体与它所定义的变量a为例,&a 与 &a.x、&a.y、

        &a.z 的内存地址是一样的。因为,它们都是在同一个内存地址开始的内存空间中。

 

  (4)不能对共用体变量名赋值或引用。

 

     例如:使用上面例子中定义的UN共用体与它所定义的变量a为例,

         a = 11; //错误,不能对共用体a赋值。

         int n = a;//错误,不能引用共体体a。

 

  (5)不能在共用体定义时进行初始化。

 

   例子:

        union UN  //定义了共用体UN

        {

         int x;    

         char y;

         float z;        

        } a = { 10,'c',6.5 }; //错误,不能在定义时初始化

 

  (6)不能把共用体作为函数参数,也不能返回共用体变量,但可以使用共用体变量指针

 

  (7)共用体可以定义在结构体中,而结构体也可以定义在共用体中。

       例子:

       struct

       {

          int x;

          union      

          {

             char y;

             float z;

          }test;  //结构体中定义了共用体变量test

       };

 

  (8)可以定义共用体数组,而数组也可以作为共用体的成员。

       例子:

       union UN  //定义了共用体UN

       {

         int x;    

         char y;

         float z[3];  //定义数组成员z        

       }; 

       union UN a[2];  //定义了共用体数组a

 

=======================================================================

非常好,现在,我们已经掌握了C语言中的(共用体)但是,如何去运行用它呢?

所以,我们就需要通过下方的链接,进入到C语言的代码训练中,然后,通过实践去加深对该知识点的理解与运用。

>>>下载训练环境与使用说明(使用真实的开发环境,结合游戏闯关进行编程训练)