首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

C語言基礎教程(四)結構體與聯合體的關鍵區別及實例演示

     編輯:C 語言基礎

結構體 vs 聯合體:核心區別

  1. 存儲方式:結構體所有成員同時存在;聯合體任一時刻只存放一個被選中的成員。
  2. 賦值影響:對聯合體不同成員賦值會覆蓋其他成員;結構體成員賦值互不影響。

實例深度解析

main() {
    union {                  // 定義一個聯合體
        int i;
        struct {             // 聯合體中嵌套結構體
            char first;
            char second;
        } half;
    } number;

    number.i = 0x4241;       // 賦值整型
    printf("%c%c\n", number.half.first, number.half.second);
    // 輸出: AB  (0x41='A', 0x42='B')

    number.half.first = 'a'; // 賦值結構體成員
    number.half.second = 'b';
    printf("%x\n", number.i);
    // 輸出: 6261  ('a'=0x61, 'b'=0x62)
}

結果分析

  • 給 i 賦值 0x4241 後,低八位 0x41 對應 first('A'),高八位 0x42 對應 second('B')。
  • 給 first、second 賦字符 'a'、'b' 後,其 ASCII 碼 0x61、0x62 成為 i 的低、高八位,組成 0x6261。

此例直觀展示了聯合體成員共用內存、相互覆蓋的特性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved