共用体-阅后即焚的变量
union共用体即它内部的成员,存储在同一个地址空间中。
union共用体即它内部的成员,存储在同一个地址空间中。
通过图示,比较生动的让大家看到,不论来了多少个成员,所有成员只能存储在同一个地址空间中。那么地址空间的大小具体应该是多大呢?
地址空间的大小取决于最大的数据类型,最大的数据类型有多大,共用体数据的大小就有多少:
从图示代码中,可以明确的看到,共用体变量的大小,取决于共用体成员中最大的数据类型,即当最大的是int型整型变量的时候,共用体大小就为4字节,当为double类型的时候,共用体大小就变成了8字节。
那么接下来再带大家看一下,我们今天的重点,也是对于新手而言比较容易入坑的点,小李将这个特点称为-“阅后即焚的变量”。
从代码中,我们可以看到,当我们对公用体的第二个成员赋值之后,再看共用体的第一个成员值,也被改变了。这就是对于共用体的成员都存在同一个地址空间的体现。一个char型变量有8位,当我们赋值之后,系统就会在共用体空间的低八位进行存储。从而之前存储的内容就被覆盖了。
总结,共用体的成员全部存储在一个空间中,所以对于成员的使用,必须要即配即用,阅后即焚,在一个成员赋值之后,其它的成员的值都会由于公用地址空间的原因受到影响