


🌟 第1题:变量会不会变成15?
(答案:✅️ 正确)
1、🧙 故事
小明有一个数:
a = 5
他把 a 送进一个"加工函数"。
但是!!这个函数是:
👉 引用传递(本人去了)
2、🧠 关键点
void add10(int &x) { x += 10; }
👉 这里的 &x 是"引用的本人"!
3、🎯 结果
函数里改了:
a = 15
外面:
a 也改为 15!
4、✔ 答案:✅️ 正确
🌟 第2题:引用能不能改绑?
(答案:✅ 对)
1、🧙 故事
引用就像"认主人" 🐶
int a = 5;
int &r = a;
👉 r 已经认定 a 了!
2、🧠 能不能改?
int b = 10;
r = b;
⚠️ 这不是改绑!
👉 是把 b 的值赋给 a!
3、🎯 结论
引用一旦绑定:
👉 不能再换人!
4、✔ 答案:✅️ 正确
🌟 第3题:输出是不是5?
(答案:❌ 错)
1、🧙 故事
这是一个二维数组地址计算题:
&a[1][2] - &a[0][1]
2、🧠 关键点
数组在内存是连续的!
二维数组:
a[0][0] a[0][1] a[0][2]
a[1][0] a[1][1] a[1][2]
3、🎯 数距离
👉 从 a[0][1] 到 a[1][2]
数一数:
a[0][1] → a[0][2] → a[1][0] → a[1][1] → a[1][2]
👉 一共走了 4 步!
4、✔ 输出不是5,应该是4。
5、 答案:❌ 错
🌟 第4题:函数重载会成功吗?
(答案:❌ 错)
1、🧙 故事
有两个函数:
int calc(int x);
int calc(int x, int y=10);
2、🧠 问题来了!
调用:
calc(5);
👉 会匹配哪个?
3、💥 冲突!
两个都能用:
-
calc(int x)
-
calc(int x, int y=10)
👉 编译器懵了 😵
4、修改方案:
方案1:移除默认参数,明确重载逻辑
cpp
// 声明两个明确的重载版本
int calc(int x); // 单参数版本
int calc(int x, int y); // 双参数版本
// 定义
int calc(int x) { return x * 2; }
int calc(int x, int y) { return x * y; }
int main() {
cout << calc(5) << endl; // 调用单参数版本
cout << calc(5, 10); // 调用双参数版本
}
方案2:保留默认参数,但删除单参数版本
cpp
// 声明(含默认参数)
int calc(int x, int y = 10);
// 定义(唯一版本)
int calc(int x, int y) { return x * y; }
int main() {
cout << calc(5); // 唯一匹配:calc(5, 10)
}
5、答案:❌ 错
🌟 第5题:输出是不是2010?
(答案:✅ 对)
1、🧙 故事
有两个 x:
int x = 10; // 全局
void f(){
int x = 20; // 局部
}
2、🧠 执行:
f(); → 输出 20
cout<<x; → 输出 10
3、🎯 最终输出:
2010
4、✔ 答案:✅️ 正确
🌟 第6题:指针会自动变 nullptr 吗?
(答案:❌ 错)
1、🧙 故事
小明创建一个指针:
int *p;
他以为:
👉 p 会自动变成 nullptr
2、🧠 真相!
❌ 不会自动初始化!
👉 p 里面是"随机垃圾值" 💣
3、⚠️ 危险!
使用未初始化指针:
👉 可能程序崩溃!
4、答案:❌ 错

🌟 第7题:代码有没有语法错误?
(答案:✅ 对)
1、🧙 结构体嵌套
(1)结构体定义:
cpp
struct GameCharacter {
string name;
int level;
float position_x;
float position_y;
struct Equipment {
string weapon;
int attack_bonus;
int defense_bonus;
} equipment;
struct Skill {
string name;
int damage;
} skills[8];
int skill_count;
};
(2)Equipment和Skill作为GameCharacter的内部结构体是合法的,符合C++标准。
(3)直接在结构体内部定义并实例化(如equipment成员)是允许的。
2、✔ 答案:✅️ 正确
🌟 第8题:能不能写入文件?
(答案:❌ 错)
1、🧙 故事
代码:
ofstream fout("data.txt");
cout << "Hello";
2、🧠 问题在哪?
(1)👉 输出用的是:
cout(屏幕)
(2)而不是:
fout(文件)
3、🎯 结果
文件是空的 😢
4、答案:❌ 错
🌟 第9题:两种排序一样快吗?
(答案:❌ 错)
1、🧙 故事
有两个排序选手:
插入排序 🐢
选择排序 🐢
2、🧠 虽然:
它们都是:
O(n²)
3、⚠️ 但实际!
👉 插入排序在"接近有序"时非常快!
👉 选择排序一直慢
4、✔ 不能互相替代
5、答案:❌ 错
🌟 第10题:递推时间复杂度是多少?
(答案:❌ 错)
1、🧙 故事
这是一个斐波那契程序:
for(int i=2;i<=n;i++)
2、🧠 分析
使用递推的方法,只有一个循环:
👉 每次只做一次加法
3、🎯 时间复杂度:
O(n)
4、❌ 题目说是 O(2ⁿ) → 错!
5、✔ 答案:✅️ 正确
🎉 考点汇总
| 类型 | 题号 |
|---|---|
| 值传递 vs 引用 | 1、7 |
| 引用本质 | 2 |
| 指针安全 | 6 |
| 文件操作 | 8 |
| 排序理解 | 9 |
| 复杂度 | 10 |
| 作用域 | 5 |
| 二维数组地址 | 3 |
| 函数重载 | 4 |








