1. 程式人生 > >淺談c++中結構體和共用體的區別

淺談c++中結構體和共用體的區別

ont 基本類型 erl list 變量名 ext 使用結構體 oot 數據格式

在c++中,結構體(struct)和共用體(union)是兩種很相似的復合數據類型,都可以用來存儲多種數據類型,但是兩者還有很大的區別。

  1. 結構體(struct)

    結構是用戶自定義的類型,比數組更靈活,同一個結構可以存儲多種類型的數據。

    結構的創建包括兩步,首先定義結構描述---描述並標記了能夠存儲在結構中的各種數據類型。

    struct shoes {

    char name[20];

    int size;

    double price;

    };

    下面就可以按描述創建結構變量。

    shoes sport;

    [struct] shoes boot;(c++中struct 可以省略)

    在c++中,結構聲明可以說是定義了一種新類型,結構名相當於基本類型名。使用結構體,通過結構變量名使用成員操作符(.)來訪問各個成員,如sport.name。訪問類成員函數的方式就是從訪問結構成員變量的方式衍生而來的。

  2. 共用體(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++中結構體和共用體的區別