——可用於存儲多種數據類型數據,但只能同時存儲其中一種的一個值程序員
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