langShiftlangShift

結構體與聯合體

從 JavaScript 視角學習 C 語言結構體與聯合體,理解 struct、union、記憶體佈局,並對比 JS 物件。

結構體與聯合體

1. 概念介紹

從 JavaScript 物件到 C 結構體

在 JavaScript 中,物件是動態的鍵值對集合,屬性可隨時新增或刪除。C 語言中的結構體(struct)則用於將相關變數組合,記憶體佈局固定。聯合體(union)允許不同型別共用同一塊記憶體。

💡 核心概念:C 的結構體與聯合體是建模複雜資料、優化記憶體與系統級程式設計的基礎。

2. 語法對比

正在加载...

3. 聯合體

正在加载...

4. 常見陷阱

  • C 結構體佈局固定,無法動態新增屬性
  • 聯合體成員共用記憶體,只能有效使用一個成員
  • 字串操作需注意緩衝區大小(如用 strcpy
  • 記憶體對齊與填充會影響結構體大小

5. 練習題

  1. 定義一個 Book 結構體,包含書名、作者與價格,撰寫輸入與輸出程式。
  2. 建立一個聯合體,可存放 intfloatchar[10],並示範用法。
  3. 比較含相同成員的結構體與聯合體的記憶體用量。

6. 效能分析

  • 結構體提供高效、快取友善的資料佈局
  • 聯合體在僅需存一種型別時節省記憶體
  • 不當使用聯合體可能導致未定義行為

小結:C 的結構體與聯合體是資料建模與記憶體優化的利器。與 JS 物件不同,它們佈局固定且需手動管理記憶體。熟練掌握這些概念對系統程式設計與高效能開發至關重要。