结构体与联合体
从 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 对象不同,它们布局固定且需手动管理内存。掌握这些概念对系统编程和高性能开发至关重要。