C语言中的共用体(union)

    共用体(union)指的是多个不同的变量共同使用同一段内存空间,其内存空间的大小只与这些变量中字节长度最大的类型的变量有关。就目前而言,数据存储在内存中不管是什么类型,其本质都是存储0、1二进制数据,但不同之处在于数据由二进制数据表的的规则不同,对应的就有了空间大小的不同。共用体(union)类型的变量分配的空间是其占用存储空间最大的类型那么大,也就是说该空间能够容纳多种数据类型的数据而不会丢失数据,剩下的只是数据解析规则的变化而已。

       定义与使用方式:

        unionA

        {

                  inta;

                  charb;

        };

        typedefunionB

        {

                  longaa;

                  shortbb;

                  charcc;

                 int*p;

        }UB;

          unionAa;

       UBb;

   

       b.p=malloc(sizeof(int));

         使用共用体应该注意的细节:

1、 同一个内存段可以用来存放几种不同类型的成员,但是在每一次只能存放其中的一种,而不是同时存放几种。

2、 共用体变量中起作用的成员是最后一次存放的成员,在存入一个新成员后,原有成员就失去作用。

3、 共用体变量的地址和它的各成员的地址都是同一地址。

4、 不能对共用体变量名赋值,也不能企图引用变量名来得到一个值,并且,不能在定义共用体变量时对它进行初始化。

5、 共用体类型可以出现在结构体类型的定义中,也可以定义共用体数组。反之,结构体也可以出现在共用体类型的定义中,数组也可以作为共用体的成员。

6、 共用体数据的输出结果与存储结构密切相关,在大、小端存储模式中有显著区别

7、 共用体中可以拥有指针类型的成员,但在使用过程中务必谨慎小心,一定要确保指针指向的内存归还后才能使用共用体存放新的数据,否则存在内存泄漏的致命风险。

猜你喜欢

转载自blog.csdn.net/smallerxuan/article/details/80660510
今日推荐