← 目录 / C++ 编程语法

一、基础框架

从第一行代码出发,认识 C++ 程序的骨架结构,理解每一行代码的含义,以及代码从源文件到可执行程序的完整旅程。

第一个程序

在正式开始写代码之前,先来认识 C++ 程序的基本结构。就像写文章需要有开头、正文、结尾,C++ 程序也有它固定的骨架。

下面是我们的第一个 C++ 程序——它会在屏幕上输出 Hello, World!

C++
1#include<iostream> // ① 引入头文件(输入输出工具包)
2using namespace std; // ② 使用 std 这个"大仓库"
3
4int main() // ③ 主函数:程序从这里开始
5{
6 cout << "Hello, World!"; // ④ 输出文字
7 return 0; // ⑤ 程序正常结束
8}

程序结构详解

上面的程序每一行都有特定的含义,我们来逐行理解:

代码 含义说明
#include<iostream> 加载"输入输出工具包",这样程序才能在屏幕上显示文字(cout)、从键盘接收数据(cin
using namespace std; 这些工具都放在一个叫 std 的"大仓库"里,这行代码让我们能直接取用,不用每次都写"从 std 仓库里拿"(即 std:: 前缀)
int main() 主函数,是程序的入口。程序运行时,会从 main() 开始执行
{ } 花括号包裹函数体(要执行的代码块)
cout << "..." 向屏幕输出内容,<< 是插入运算符
return 0; 结束主函数,0 代表程序正常退出
⚠️
注意:每条 C++ 语句必须以分号 ; 结尾,忘记分号是初学者最常见的错误!
🆕
新手小贴士:头文件和命名空间到底是什么?

#include<iostream>:可以理解成告诉计算机——"我们要用你内置的‘输入输出工具包’,这样才能在屏幕上显示文字,或者接收键盘输入。" 这个工具包里就装着 coutcin 这些东西。

using namespace std;:这个工具包(以及 C++ 标准库里其他的工具)都被统一放进了一个叫 std 的"大仓库"里。写这行代码,就是让我们能直接喊工具的名字(比如 cout),而不用每次都写"从 std 仓库里拿 cout"(也就是 std::cout)这么麻烦。

现阶段这样理解就足够用了——头文件和命名空间背后还有更多细节,我们会在后面的章节里继续展开。

注释

注释是写给看的说明文字,程序运行时会被自动忽略。C++ 支持两种注释方式:

单行注释 //

// 开始,直到该行末尾,整行都是注释。

多行注释 /* ... */

/**/ 包裹,可以跨越多行,适合写较长的说明。

C++ · 注释示例
1// 这是单行注释,从 // 开始,到行尾结束
2
3/*
4 这是多行注释
5 可以跨越多行
6 适合写较长的说明
7*/
8
9int main()
10{
11 // 单行注释:输出问候语
12 cout << "Hello!"; // 也可以写在语句后面
13 return 0;
14}
💡
养成写注释的好习惯!代码写完一段时间再回来看,注释能帮你快速回忆当时的思路。竞赛中写清楚关键步骤的注释,也方便调试和检查。

C++ 程序的执行流程

你可以把这个过程想象成一次"翻译 + 组装"的旅程:你写的源代码是"中文",计算机只听得懂"机器语言",中间需要经过一层层翻译,最后再把翻译好的各个零件组装成一个真正能运行的软件。

这段旅程一共分四步:预处理 → 编译 → 汇编 → 链接,每一步都会生成对应的文件。先看整体流程,再逐步展开细节。

源代码文件
main.cpp
预处理器
核心任务:文本替换
-E
纯净 C++ 文本
main.i
编译器
核心任务:检查语法并翻译成汇编
-S
汇编文件
main.s
汇编器
核心任务:变成机器码
-c
目标文件
main.o
链接器
核心任务:组装成最终程序
可执行程序
main / main.exe

以这段程序为例,走完四个步骤

C++ · main.cpp
1#include <iostream>
2#define PI 3.14
3
4int main()
5{
6 // 打印圆周率
7 std::cout << PI << std::endl;
8 return 0;
9}
🔧
结论:我们平时按一下"运行"按钮,计算机就自动帮我们连续完成了这四步,不需要手动操作。

了解这四步最大的好处是:以后编译报错时,能大致判断问题出在哪一阶段——如果提示"语法错误""缺少分号"之类,通常是编译阶段出的问题;如果提示"找不到某个函数的定义""undefined reference",通常是链接阶段出的问题(比如少写了某个 .cpp 文件)。知道方向,排错就会快很多。

📎 拓展知识 · 竞赛小贴士

💡
"万能头文件"是什么?
在信息学竞赛(如 NOI 系列比赛)中,你可能会见到这样的写法:#include <bits/stdc++.h>——这个"万能头文件"能一次性引入几乎所有标准库头文件,图省事时很好用。

初学阶段,尤其是学习基础语法时,更推荐使用标准的 #include<iostream>:一来能帮你更清楚地理解"用了什么工具就该引入什么头文件"这件事;二来 bits/stdc++.h 只在 GCC 编译器下有效(虽然大多数 OJ 平台支持),并不是 C++ 标准的一部分,还会拖慢编译速度——在部分限时竞赛中需要留意。

简单说:正式学语法的时候按标准写法来,等到刷题追求效率时再用这个技巧也不迟。