——可用于存储多种数据类型数据,但只能同时存储其中一种的一个值程序员
union one4all { int int_val; long long_val; double double_val; }; one4all pail; pail.int_val = 15; // store an int cout << pail.int_val; pail.double_val = 1.38; // store a double, int value is lost cout << pail.double_val;
pail有时能够是int变量,有时能够是double变量...因为共用体每次只能存储一个值,所以共用体的长度为其最大成员的长度。数据结构
当数据项使用两种或更多种格式(但不会同时使用)时,可节省空间;它经常使用于操做系统数据结构或硬件数据结构。spa
须要注意的是:程序员负责决定当前哪一个成员是活动的,也就是说程序没法本身判断或使用当前共用体使用的成员操作系统
——匿名共用体没有名称,其成员将成为位于相同地址处的变量。每次只有一个成员是当前的成员blog
struct widget { char brand[20]; int type; union { long id_num; // anonumous union char id_char[20]; // other widgets }; ... widget prize; ... if (prize.type == 1) cin >> prize.id_num; // 使用变量id_num else cin >> prize.id_char; // 使用变量id_char
因为共用体是匿名的,所以id_num和id_char被视为prize的两个成员,它们的地址相同,因此不须要中间标识符id_valci