共用体的成员共享一个存储空间,在一个程序的不同运行阶段,尽管有些变量是相关的,但是仍然可能存在一些不相关的变量,共用体使这些不相关的变量可以共享一个存储空间,从而避免了不再使用的变量仍占据存储空间造成的浪费。共用体的成员可以是任意数据类型。存储一个共用体所需要的字节总数,必须保证可以容纳其占用空间最大的成员。共用体虽然一般包含多个数据类型,但是每次只允许访问一个成员,即一种数据类型。
共用体的声明
声明一个共用体与声明一个结构体格式相同,只是将struct改成了union。如下:
union number {
int x;
double y;
};
共用体的操作
可对共用体进行的操作有三种:
一、两个具有相同类型的共用体之间的赋值。
二、用&运算符取得一个共用体变量的地址。
三、用结构体成员运算符和结构体指针运算符访问其成员。
两个共用体并不能比较。
共用体的声明
在共用体变量的声明语句中,可以用与其第一个成员相同数据类型的数值来对共用体变量进行初始化,如下:
union number value = {10};
但是如果类型不同,通常会截取部分值并提示错误消息,如下:
union number value = {1.4};
共用体演示
#include <stdio.h>
union number {
int x;
double y;
};
int main() {
union number value;
value.x = 10;
printf("int:%d double:%f", value.x, value.y);
value.y = 100.0;
printf("int:%d double:%f", value.x, value.y);
}
位域
与结构体中相同