共用体(union)
进行某些算法的C语言编程的时候,需要使几种不同类型的变量存放到同一段内存单元中。也就是使用覆盖技术,几个变量互相覆盖。这种几个不同的变量共同占用一段内存的结构,在C语言中,被称作“共用体”类型结构,简称共用体。 也叫 联合体。
共用体变量的地址和它的各成员的地址都是同一地址。其所占内存,与占用内存最大的成员变量一致。
定义
语法格式:
|
|
使用方式
与结构体的使用方式基本是一样的。也可以出现在结构体类型中;反之,结构体类型也可以出现在共用体类型中。
使用注意点:
|
|
输出:
|
|
上面的示例,可以看出:cob.c
对应的整数值就是cob.a
的值,即73。符合,共用体的内存覆盖技术。
但是要注意,在共用体中,整数和浮点数相互间不会自动转换。
将上面的使用代码修改一下:
|
|
会发现,cob.a
和cob.c
的输出结果,都跟预计的不一样,是错误的值。因为,这时存储的最新的值是一个float型,所以也就不能正确输出cob.a
和cob.c
。
若,将上面的注释行打开,发现cob.a
和cob.c
都输出正确了,但cob.b
又不对了,因整数和浮点数相互间不会自动转换。