C語言中的結構體聯合體是什麼?


聯合體 (union) 是C語言中一個記憶體位置,由多個不同資料型別的變數共享。

語法

結構體聯合體的語法如下:

union uniontag{
   datatype member 1;
   datatype member 2;
   ----
   ----
   datatype member n;
};

示例

以下示例演示了結構體聯合體的用法:

union sample{
   int a;
   float b;
   char c;
};

聯合體變數的宣告

以下是聯合體變數的宣告,共有三種類型:

型別1

union sample{
   int a;
   float b;
   char c;
}s;

型別2

union{
   int a;
   float b;
   char c;
}s;

型別3

union sample{
   int a;
   float b;
   char c;
};
union sample s;
  • 宣告聯合體時,編譯器會自動建立最大的變數型別來容納聯合體中的變數。

  • 任何時候,只能引用一個變數。

初始化和訪問

  • 訪問聯合體成員使用與結構體相同的語法。

  • 點運算子用於訪問成員。

  • 箭頭運算子 (->) 用於透過指標訪問成員。

示例程式1

以下程式演示了結構體聯合體的用法。

線上演示

union sample{
   int a;
   float b;
   char c;
}
main ( ){
   union sample s = {10, 20.5, "A"};
   printf("a=%d",s.a);
   printf("b=%f",s.b);
   printf("c=%c",s.c);
}

輸出

執行上述程式後,會產生以下結果:

a = garbage value
b = garbage value
c = A

結構體聯合體

  • 結構體可以巢狀在聯合體中,這被稱為結構體聯合體。

  • 可以在結構體內部建立聯合體。

示例程式2

另一個C程式,演示了結構體聯合體的用法,如下所示:

線上演示

struct x{
   int a;
   float b;
};
union z{
   struct x s;
};
main ( ){
   union z u;
   u.s.a = 10;
   u.s.b = 30.5;
   printf("a=%d", u.s.a);
   printf("b=%f", u.s.b);
}

輸出

執行上述程式後,會產生以下結果:

a= 10
b = 30.5

更新於:2021年3月24日

10K+ 瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告