結構體與聯合體
從 JavaScript 視角學習 C 語言結構體與聯合體,理解 struct、union、記憶體佈局,並對比 JS 物件。
結構體與聯合體
1. 概念介紹
從 JavaScript 物件到 C 結構體
在 JavaScript 中,物件是動態的鍵值對集合,屬性可隨時新增或刪除。C 語言中的結構體(struct)則用於將相關變數組合,記憶體佈局固定。聯合體(union)允許不同型別共用同一塊記憶體。
💡 核心概念:C 的結構體與聯合體是建模複雜資料、優化記憶體與系統級程式設計的基礎。
2. 語法對比
正在加载...
3. 聯合體
正在加载...
4. 常見陷阱
- C 結構體佈局固定,無法動態新增屬性
- 聯合體成員共用記憶體,只能有效使用一個成員
- 字串操作需注意緩衝區大小(如用
strcpy
) - 記憶體對齊與填充會影響結構體大小
5. 練習題
- 定義一個
Book
結構體,包含書名、作者與價格,撰寫輸入與輸出程式。 - 建立一個聯合體,可存放
int
、float
或char[10]
,並示範用法。 - 比較含相同成員的結構體與聯合體的記憶體用量。
6. 效能分析
- 結構體提供高效、快取友善的資料佈局
- 聯合體在僅需存一種型別時節省記憶體
- 不當使用聯合體可能導致未定義行為
小結:C 的結構體與聯合體是資料建模與記憶體優化的利器。與 JS 物件不同,它們佈局固定且需手動管理記憶體。熟練掌握這些概念對系統程式設計與高效能開發至關重要。