🔷 第一章 初识C++
📄 一句话概括

把 Hello World 逐行拆开:#include <iostream> 是预处理(引入输入输出功能)、using namespace std; 是名字空间(省得每次写 std::cout)、int main() { } 是入口函数(程序从这里开始跑,有且只有一个)、cout << "..." << endl; 是输出语句、return 0; 是返回值(告诉系统"正常结束")。三条铁律:语句末尾分号不能少、大小写敏感(Main 不等于 main)、引号必须是英文半角。

一、逐行拆解

#include <iostream>          // ① 预处理指令:把"输入输出"功能装配进来
using namespace std;         // ② 名字空间:从此写 cout 不用写 std::cout

int main() {                 // ③ 主函数:程序的唯一入口
    cout << "Hello, C++!" << endl;   // ④ 把文字送到屏幕,endl 换行
    system("pause");         // ⑤ 暂停一下,防止窗口一闪而过
    return 0;                // ⑥ 交差:0 表示程序正常结束
}                            // ⑦ 函数体结束

① #include <iostream> - iostream = input output stream(输入输出流)。它不是一个文件"打开",而是把标准库的一部分内容复制到你的文件里(预处理指令,行首是 #,末尾不带分号) - 少了它 → 报错 cout was not declared(编译不认识 cout 是什么)

② using namespace std; - std 是标准库的"名字空间"(可以理解成"标准库的抽屉")。不写这句,每次都得写 std::cout、std::endl - 少了它 → 报 cout was not declared;写法之争(using namespace std; vs 逐处写 std::)在多人项目里更讲究,入门先用简单写法

③ int main() { } - int 表示这个函数返回一个整数;main 是固定名字,程序运行从这里开始 - { } 是函数体,里面写要做的事;有且只有一个 main(第 2 章之后会讲其他函数,但没有第二个 main) - 少了 main → 报链接错误(找不到入口)

④ cout << "Hello, C++!" << endl; - cout = character output(字符输出);<< 是"往屏幕送"的箭头(形象记忆:箭头指向屏幕方向) - endl = end line(换行) - 分号是语句的句号——漏了就是最常见的编译错误

⑤ system("pause"); - 调用系统的 pause 命令(显示"请按任意键继续"),纯 Windows 专有技巧,入门教材爱用 - 用它最好在顶部加 #include <cstdlib>(声明它来自哪里),不加多数编译器也能过 - 替代方案:cin.get(); 或 getchar();(1.2.3 三解法)

⑥ return 0; - 把 0 交还给操作系统,约定俗成表示"正常结束"(非 0 值表示异常——第 9 章之后细说) - 少写 return 0; 在 main 里通常不报错(编译器会自动补),但写全是好习惯

二、注释:两种写法

// 单行注释:从 // 到行尾都被忽略    ← 最常用
/* 多行注释
   可以写好几行 */

注释不参与编译——它是给人看的:说明"这行为什么这么写"。好习惯:先给自己写注释(比如"// 输出第一行"),后面学复杂逻辑时会感谢自己。

三、三条铁律(新手犯错的 90% 都在这)

铁律 写错的后果 例子
分号不能少 编译报错,常指到下一行让人迷惑 cout << "hi" ← 缺 ;
大小写敏感 Main/COUT/endl 写错就报"未声明" int Main() 不是入口
引号要英文半角 中文引号 " 报"无法识别的字符" 输入法切成英文再写 "

附加一条:花括号 { } 成对写、成对缩进——先写 { } 再往里填内容,能避免"括号不配对"。

四、动手 Demo:三处故意写错,看编译器怎么喊

拿 1.2.3 的 hello.cpp,做三轮"破坏实验",每轮改完 Ctrl+S → F11,记下报错原话,然后改回来:

第一轮:删掉 cout 那行末尾的分号 - 预期:报错类似 expected ';' before 'system'——编译器指向的是"下一个词",这是新手迷惑点

第二轮:把 cout 改成 Count(首字母大写) - 预期:报错类似 'Count' was not declared in this scope——大小写敏感的实证

第三轮:把 "Hello, C++!" 的英文引号换成中文引号 - 预期:报一堆"无法识别的字符"或奇怪的 token 错误——中文标点的实证

看到什么算成功:三轮都能"看懂报错 → 定位 → 改回 → 编译通过"。这个过程练三遍,胜过读三十遍语法书。

30 秒实验:把 cout << "A" << endl; 复制三行,每行换成不同文字——体会"语句可以重复,结构不变";再试着把三行写成一行(用多个 <<),看看输出结果差异。

五、常见误区

  1. "#include 要用分号结尾"——不用。它是预处理指令,和后面的语句不是一类
  2. "using namespace std; 是可有可无的装饰"——没有它就要写 std::cout、std::endl;省它是"方便换风险"(大项目里名字冲突会麻烦,进阶再讲究)
  3. "main 换成别的名字也能跑"——不能。main 是标准规定的入口名,系统只认它
  4. "报错行号就是错误行"——不一定:漏分号常报在下一行。看行号 ±2 行范围最稳
自测三问(点开对答案) 1. 四段结构分别是什么?——`#include` 预处理引入库、`using namespace` 名字空间、`int main(){}` 入口函数、`cout`/`return` 语句与返回值。 2. 三条铁律?——语句末尾分号不能少;大小写敏感(`Main`≠`main`);引号用英文半角(中文引号会报"无法识别的字符")。 3. 漏了分号为什么常报在下一行?——编译器读到下一个词才发现"上一句没结束",所以行号往往偏后;排查时看行号附近 ±2 行。

相关笔记