博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言中的共用体(union)
阅读量:4111 次
发布时间:2019-05-25

本文共 746 字,大约阅读时间需要 2 分钟。

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

 

转载地址:http://yqmsi.baihongyu.com/

你可能感兴趣的文章
Codeforces-429-2-B Godsend
查看>>
Codeforces-429-2-C Leha and Function
查看>>
图论-强连通分量 poj-2186
查看>>
HDU 2647 Reward
查看>>
GYM100792K King‘s rout
查看>>
Codeforces Round#412 C Success Rate
查看>>
codeforces 412 B T-shirt Hunt
查看>>
codeforces 412 D Dynamic Problem Scoring
查看>>
codeforces -420-B. Okabe and Banana Trees
查看>>
codeforces 420-C. Okabe and Boxes
查看>>
数据结构--线性表的顺序表示及操作
查看>>
UVA 658 It's not a Bug, it's a Feature!
查看>>
Educational Codeforces Round 27-C. Two TVs
查看>>
UVA-1658 Admiral
查看>>
二维几何基础--向量的表示及简单运算
查看>>
向量运算-叉积,点积
查看>>
点-线,线-线
查看>>
That Nice Euler Circuit UVALive - 3263
查看>>
7-9 拯救007
查看>>
7-3 古风排版
查看>>