結構體和聯合體的主要區別是:結構體內部數據時分開放的,而聯合體所有數據是放在一個地址空間內,我們只能使用其中一個數據。下面舉例說明:代碼均通過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,大小端對其在另一篇博文中有詳細的介紹。這裏不詳述