C++ 共用體

——可用於存儲多種數據類型數據,但只能同時存儲其中一種的一個值程序員

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

相關文章
相關標籤/搜索