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
廣告