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

C語言聯合體定義、訪問與嵌套應用

     編輯:關於C語言

聯合體核心特性

聯合體是特殊的構造類型:其成員共享同一塊內存區域,同一時刻只能存儲一個成員的值。聯合體變量長度等於最大成員長度。這與結構體「各成員獨立佔用內存、總長度為成員長度之和」形成鮮明對比。

聯合體定義與變量聲明

union 聯合體名 {
    數據類型 成員名;
    數據類型 成員名;
    ...
} 聯合體變量名;

基本示例

union a_bc {
    int i;
    char mm;
};

union a_bc lgc; // 定義聯合體變量
// lgc 中 i 和 mm 共用同一內存地址

成員訪問方式

  • 變量直接訪問:聯合體變量.成員名
  • 指針訪問:聯合體指針->成員名

聯合體與結構體嵌套

聯合體可嵌套於結構體,結構體也可作為聯合體成員:

struct {
    int age;
    char *addr;
    union {
        int i;
        char *ch;
    } x;
} y[10];

訪問示例

  • y[1].x.i — 訪問第 2 個結構體中聯合體的整型成員
  • *y[2].x.ch — 訪問第 3 個結構體中聯合體字符串指針指向的首字符
  • ❌ y[2].x.*ch — 錯誤寫法

應用場景

聯合體適用於「同一存儲空間在不同時刻存放不同類型數據」的場景:

  • 節省內存(如互斥的數據字段)
  • 類型雙關:以不同類型解讀同一位模式
  • 硬件寄存器映射、協議數據包解析

注意:聯合體不提供類型安全,程序員需自行確保正確解讀當前存儲的數據類型。

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