淺談c++中結構體和共用體的區別
在c++中,結構體(struct)和共用體(union)是兩種很相似的復合數據類型,都可以用來存儲多種數據類型,但是兩者還有很大的區別。
-
結構體(struct)
結構是用戶自定義的類型,比數組更靈活,同一個結構可以存儲多種類型的數據。
結構的創建包括兩步,首先定義結構描述---描述並標記了能夠存儲在結構中的各種數據類型。
struct shoes {
char name[20];
int size;
double price;
};
下面就可以按描述創建結構變量。
shoes sport;
[struct] shoes boot;(c++中struct 可以省略)
在c++中,結構聲明可以說是定義了一種新類型,結構名相當於基本類型名。使用結構體,通過結構變量名使用成員操作符(.)來訪問各個成員,如sport.name。訪問類成員函數的方式就是從訪問結構成員變量的方式衍生而來的。
-
共用體(union)
共用體也是一種數據格式,它能夠存儲不同的數據類型,但只能同時存儲其中的一種類型。也就是說,結構可以同時存儲int、long和double,共用體只能存儲int、long或者double中的一種。共用體的句法與結構類似,但含義不同。
如
union one4all {
int int_val;
long long_val;
double double_val;
};
可以使用one4all變量來存儲int、long 或double,條件是在不同的時間進行。
定義一個共用體變量,one4all pail;
pail使用成員操作符訪問其中變量時只有一個成員是當前成員,即one4all中的三個變量共享一個地址,當pail訪問int_val時,內存中存儲的就是int型。
共用體的用途之一就是,當數據使用兩種或更多種格式(但不會同時使用)時,可以節省空間。
淺談c++中結構體和共用體的區別