初学者应优先掌握main函数、#include、std::cout/std::cin、基本类型、变量声明与赋值、if/for六类内容;学完即可编写可运行调试的小程序,避免因编译错误如undefined reference to `main'而受挫。

初学者直接上手 C++,必须优先掌握 main 函数、#include、std::cout/std::cin、int/double/std::string、变量声明与赋值、if/for 这六类内容——其他全是干扰项。学完这六类,就能写可运行、可调试、可验证逻辑的小程序,比如成绩判断、阶乘计算、简单菜单交互。
为什么不是先啃“类”或“指针”?
因为 C++ 入门最真实的卡点不是语法难,而是「编译不通过却不知道哪行错了」。新手第一次遇到 undefined reference to `main' 或 no matching function for call to 'cout ,90% 源于头文件没包含、命名空间没处理、函数签名写错——这些都发生在最基础的输入输出和控制流环节。
常见错误现象:
-
cout报错:漏了#include <iostream>或没写using namespace std;(或坚持用std::cout) -
string无法使用:只写了#include <iostream>,忘了加#include <string> - 程序一闪而过:Windows 下没加
std::cin.get()或system("pause")(不推荐后者)
哪些知识点可以暂时跳过?
初学阶段主动绕开以下内容,不是不重要,而是会严重拖慢「写出第一个能跑通的程序」的节奏:
立即学习“C++免费学习笔记(深入)”;
-
new/delete:动态内存对新手等于黑盒,先用std::vector和局部变量 - 函数重载、缺省参数、内联函数:语法糖,无实际业务驱动时纯属增加理解负担
- 引用(
&):和指针一起讲才合理,单独提前引入反而混淆int& x = y和int* p = &y的区别 - 命名空间嵌套、自定义命名空间:
std够用三个月,别急着造轮子
第一个星期该敲什么代码?
按顺序实操这四段,每段改一个数、换一个变量名、加一行输出,确保全部能编译+运行+看到结果:
#include <iostream>
#include <string>
using namespace std;
int main() {
string name = "Alice";
int score = 87;
if (score >= 90) {
cout << name << " 优秀\n";
} else if (score >= 60) {
cout << name << " 及格\n";
} else {
cout << name << " 不及格\n";
}
return 0;
}重点观察:
- 删掉
#include <string>会报什么错? - 把
string name改成char name[] = "Alice"会怎样?(先别深究,只看是否编译过) - 在
if前加一行score = 95;,输出变了吗?
真正容易被忽略的是:所有初学者都会在 std::cin >> score; 后立刻写 cout << "输入完成";,但若用户输的是字母,score 不会变,cin 状态会卡住——这个坑要到第二周用 cin.clear() 和 cin.ignore() 才能填上。


















