結構體和聯合體的區別

 


結構體和聯合體的主要區別是:結構體內部數據時分開放的,而聯合體所有數據是放在一個地址空間內,我們只能使用其中一個數據。下面舉例說明:代碼均通過vs2008編譯

 

 

 
#include <iostream>
int main ()
{
    union
    {
        int i;
        struct  
        {
            char b;
            char c;
        }str;
    }number;
    number.i=0x4142;
    std::cout<<number.str.b<<number.str.c<<std::endl;
    number.str.b='a';number.str.c='b';
    std::cout<<number.i<<std::endl;
    system("pause");
    return 0;
}


 輸出:BA

            25185

這裏要說明的一點是,由於編譯的大小端對其方式不同,不同的編譯器可能會有不同的結果,

對與VS2008來說是高端對其,故第一次輸出是BA,也就是0X4142對應的assci碼,第二次輸出是0X6261,轉爲十進制爲25185,大小端對其在另一篇博文中有詳細的介紹。這裏不詳述

發佈了30 篇原創文章 · 獲贊 7 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章