首頁>Club>
6
回覆列表
  • 1 # 圖圖美兔兔

    union在C中本質上是一個結構體,用法和struct相似,用

    union 名稱 {

    //... 成員

    };來宣告

    型別使用時,要在名稱前加上關鍵字union

    union 型別名稱 變數名稱;

    在呼叫時用字尾表示式expression.identifier的形式來呼叫成員:

    a.member1 = 10; // a為union

    p->member1 = 20; // p為union的指標

    但有一些不同點:

    1. union,顧名思義,就是多個成員共用一塊記憶體。在編譯時會選取成員中長度最長的來宣告。也就是說在如下與程式片段中:

    union a { //聲明瞭三個成員,但是長度不一(後面sizeof的結果不同機器結果不同,但double肯定是最長的),於是編譯器會選取double的長的作為union a的長度

    int a1; // sizeof(int) = 4

    float a2; // sizeof(float) = 8

    double a3; // sizeof(double) = 16

    };也就是說,上述union宣告在記憶體中等同於

    struct a {

    double a3;

    };

    2. 根據第一條的特點,在對union成員進行賦值後,要注意使用時一定要呼叫賦值過的成員。

  • 中秋節和大豐收的關聯?
  • 非常目擊劇情解析?