深色模式
第 6 章:语法小结与常用工具
本章能学到什么
- 数组:C++ 版的"列表"
- 自定义函数(含返回值和参数)
#include与库的概念
三大结构回顾
| 结构 | C++ 写法 | 对应 Python |
|---|---|---|
| 顺序 | 逐行执行 | 一样 |
| 判断 | if () {} else if () {} else {} | if: / elif: / else: |
| 循环 | for (;;) / while () | for in range() / while |
数组:定长、同类型的"列表"
cpp
int pins[4] = {10, 11, 12, 13}; // 四个循迹探头的引脚号
int readings[4]; // 声明一个能装 4 个 int 的数组
Serial.println(pins[0]); // 10(下标也是从 0 开始)
for (int i = 0; i < 4; i++) {
Serial.println(pins[i]);
}和 Python 列表的区别:
| C++ 数组 | Python 列表 | |
|---|---|---|
| 长度 | 声明时定死 | 随意增减 |
| 元素类型 | 必须相同 | 可以混合 |
| 遍历 | for (i=0; i<4; i++) | for x in list |
第 12 章读四路循迹时,会看到数组配合 for 的实际用法。
自定义函数
cpp
// 返回值类型 函数名(参数类型 参数名) { ... }
float measureDistance() {
// 触发超声波……(第 10 章完整实现)
return 18.5;
}
void setLed(int pin, bool on) { // void 表示"不返回值"
digitalWrite(pin, on ? HIGH : LOW);
}
void setup() {
Serial.begin(115200);
float d = measureDistance(); // 调用
Serial.println(d);
}
void loop() {}和 Python def 的关键差异:必须声明返回值类型和参数类型。不返回值就写 void。
#include:借用现成的库
cpp
#include <Servo.h> // 引入舵机库(第 11 章用)
#include <Wire.h> // 引入 I2C 库#include <库名.h>:引入系统/已安装的库- 相当于 Python 的
import,但发生在编译期
常见坑
- 数组下标越界在 C++ 里不报错,但会读到垃圾数据甚至改坏别的变量,比 Python 危险
- 函数要在调用之前定义(或声明),否则编译报 "was not declared in this scope"
#include后面不加分号
想一想
为什么 C++ 的数组不能像 Python 列表那样随意添加元素?这和单片机内存小有没有关系?
💡 查看答案
有直接关系。C++ 数组在编译时就要确定占多少内存,之后不能变——因为单片机内存只有几百 KB,必须精打细算、提前规划。Python 列表能随意增长,是因为电脑内存大、还有运行时在背后自动管理内存;这套"管家服务"本身就要消耗资源,单片机吃不消。C++ 的严格,换来的是快和省。
