欢迎来到数据结构世界!🌍 但在玩转链表和树之前,第 1 章先给你一套「保命技能」——C++ 的核心语法。别怕,我们只讲读这本书必需的那部分。
🧩 程序 = 数据 + 指令
一个 C++ 程序的基本套路:声明变量 → 做运算 → 控制流程 → 封装成函数。书里用一个小游戏计分板程序贯穿全章,四个要点先划重点 ✍️:
int sum = 0; // 声明并初始化
for (int i = 1; i <= 10; i++) // for 循环
sum += i; // 复合赋值
🧠 最烧脑的部分:指针与引用
这是新手第一条分水岭,用「门牌号」理解:
- 变量 = 房子里的东西;
- 指针(
int* p)= 写着门牌号的纸条 📝; - 引用(
int& r)= 给房子起的别名 🏷️,从此两个名字指同一间房。
int x = 5;
int* p = &x; // p 存的是 x 的地址
int& r = x; // r 就是 x 的别名
*p = 10; // 顺着纸条找上门,把 x 改成 10
动态内存是第二道坎:new 在堆上盖新房,delete 拆掉它。⚠️ 拆完继续用(悬空指针)或者盖了不拆(内存泄漏),都是后面章节反复强调的事故源。
🏛️ 类:把数据和函数打包
C++ 的灵魂来了。类(class)= 数据成员 + 成员函数 的蓝图:
class Counter {
private: // 外面看不见(封装)
int count;
public: // 对外开放的服务窗口
Counter() : count(0) {} // 构造函数
void increment() { count++; }
int get() const { return count; } // const = 承诺不改
};
三个必须记住的关键词:
- 构造函数:对象出生时自动执行的初始化;
- 析构函数
~Counter():对象死亡时自动清理(还内存债的时刻); const成员函数:向编译器承诺「我只读不写」。
📂 文件组织的江湖规矩
书里反复强调的工程习惯:类的声明放 .h 头文件,实现放 .cpp 源文件。这个「接口与实现分离」的习惯,直接为第 2 章的抽象数据类型(ADT)铺路——用户只 include 你的头文件,不关心你怎么实现的。
🎯 本章通关清单
- [ ] 能解释指针和引用的区别,并画出内存示意图
- [ ] 会写一个带构造/析构函数的类
- [ ] 理解
new/delete配对使用的原因 - [ ] 知道
.h和.cpp各放什么
搞定这些,下一章的面向对象设计就是水到渠成!💪