为什么先学 C
很多语言语法更友好,为什么还要啃 C?因为 C 会逼你想清楚:变量在哪、函数怎么调、内存谁负责。这些「费劲」恰好是嵌入式最需要的基本功。
1. 概念:C 给你的不是语法糖,而是控制感
在托管语言里,运行时替你管很多事;在 C 里,你更接近机器:
- 一个 int 占多少字节,你可以用 sizeof 实测
- 一个结构体成员怎么排布,和内存布局直接相关
- 指针指向哪、何时 free,需要你自己推理
2. 三个很现实的好处
| 好处 | 说明 | 典型场景 |
|---|---|---|
| 岗位刚需 | 芯片厂商例程/驱动大量是 C | 看 STM32 库源码 |
| 硬件直觉 | 位运算、指针、联合体 | 解析寄存器、通信协议 |
| 语言迁移 | 许多语言语法同源 | 后续学 C++/Rust/Go 更顺 |
3. 对比小例子:同一个问题的「C 视角」
任务:把一个 32 位寄存器值的 bit5 打开,其它位不动。
| 1 | /* C 的写法:直接面向位 */ |
| 2 | uint32_t reg = 0x0000; |
| 3 | reg |= (1u << 5); // 打开 bit5 |
| 4 | reg &= ~(1u << 5); // 关闭 bit5 |
| 5 | uint32_t bit5 = (reg >> 5) & 1u; // 读出 bit5 |
这三行在嵌入式里几乎天天出现。别的语言也能算位,但 C 与硬件手册、示例代码的写法最贴近。
4. C 的不完美,也是训练
- 不自动管理内存 → 训练你设计资源生命周期
- 字符串是字符数组 → 训练你重视边界与 \0
- 类型严格、警告要认真看 → 训练严谨
5. 什么样的人特别适合先学 C
- 目标是单片机/嵌入式/驱动/操作系统
- 喜欢「知道底层发生了什么」
- 愿意用小例子反复验证,而不是只背概念
- 能接受一开始报错很多——这是正常过程
6. 常见犹豫与回答
| 你的犹豫 | 建议 |
|---|---|
| Python 更简单为什么不先学 | 简单语法是糖;C 给你结构。嵌入式岗位 C 更关键 |
| C++ 更现代 | 现代 C++ 很强,但对象模型更复杂。很多教学路径仍是 C 先打底 |
| 我数学不好 | 入门 C 主要靠逻辑与实验,不靠高数 |
| 年龄大了还来得及吗 | C 学习曲线陡但路径清晰,按章节走完全可行 |