目录
[4.1 #include 是什么](#include 是什么)
[(2)#include 是什么](#include 是什么)
[(3) 是什么](#(3) 是什么)
[(4)为什么用尖括号 < >](#(4)为什么用尖括号 < >)
[4.2 int main() 是什么](#4.2 int main() 是什么)
[(1)main 为什么这么重要](#(1)main 为什么这么重要)
[(2)为什么只能有一个 main](#(2)为什么只能有一个 main)
[(3)int 是什么意思](#(3)int 是什么意思)
[(4)为什么有时候没写 return 0;](#(4)为什么有时候没写 return 0;)
[(5)() 是什么](#(5)() 是什么)
[4.3 {} 大括号有什么作用](#4.3 {} 大括号有什么作用)
[(2)为什么 C++ 离不开大括号](#(2)为什么 C++ 离不开大括号)
[4.4 std::cout 是什么](#4.4 std::cout 是什么)
[(2)为什么前面要加 std::](#(2)为什么前面要加 std::)
[(3)为什么不能直接写 cout](#(3)为什么不能直接写 cout)
[4.5 << 是什么](#4.5 << 是什么)
[4.6 "Hello World!\n" 是什么](#4.6 "Hello World!\n" 是什么)
[(3)\n 是什么意思](#(3)\n 是什么意思)
[4.7 ; 分号有什么作用](#4.7 ; 分号有什么作用)
一、本节学习内容概要图

二、前言
对于很多刚接触 C++ 的同学来说,第一个程序通常都是下面这段代码:
cpp
#include <iostream>
int main()
{
std::cout << "Hello World!\n";
}
别看它只有短短几行,但这里面其实已经包含了 C++ 最基础的一套程序结构。
很多初学者第一次看到时,往往会有很多疑问:
#include <iostream>是什么意思?- 为什么必须写
main()?std::cout又是什么?<<为什么长这样?"Hello World!\n"后面的\n有什么作用?- 为什么最后还要加一个分号
;?{}又是干什么的?
这篇文章就从零开始,把这段代码里涉及到的每一个部分都讲清楚。你不需要一开始就把所有底层原理完全吃透,但至少要知道:每一部分是干什么的、为什么这么写、以后还会在哪里用到。
三、先整体理解这个程序在做什么
如果把它翻译成人话,大概就是:
- 先把输出功能对应的工具拿进来;
- 告诉系统,程序从
main()这里开始执行;- 在函数内部输出一句
Hello World!;- 输出完成后,程序结束。
也就是说,这段代码不是随便拼起来的,而是有明确顺序的:
- 头文件 提供功能
- 主函数 作为入口
- 语句 完成具体任务
- 程序结束 返回控制权给系统
四、逐个拆解每一个部分
4.1 #include <iostream> 是什么
(1)它的作用是什么
这一句的作用,可以先简单理解为:
把 C++ 标准库中与输入输出相关的功能"引入进来"。
也就是说,如果没有这句,后面你写的 std::cout 编译器可能就不认识。
(2)#include 是什么
#include 是一个预处理指令。
所谓预处理,你可以先理解为:在真正编译代码之前,编译器会先做一些"提前准备工作"。
其中一种准备工作,就是把你需要的头文件内容"包含"进当前源文件里。
所以:
cpp
#include <iostream>
并不是让你手动复制一个文件,而是告诉编译器:
请在编译前,把 iostream 这个头文件里的相关声明处理进来。

按住 "Ctrl" 点击 iostream

作用等同于将内部内容复制粘贴过主程序里面去,但是会比较乱
因此,写 **#include <iostream>**会比较简单
(3)<iostream> 是什么
iostream 是 C++ 标准库中的一个头文件,名字可以拆成两部分理解:
io:input / output,输入输出stream:流
所以它主要用于提供输入输出流相关功能。
最常见的就是:
std::cout:标准输出,向控制台输出内容std::cin:标准输入,从键盘读取输入std::endl:换行并刷新缓冲区
在这个 Hello World 程序里,我们只用到了其中的 std::cout。
(4)为什么用尖括号 < >
你会看到它写成:
cpp
// 你会看到
#include <iostream>
// 而不是:
#include "iostream"
这是因为两种写法一般有不同含义:
< >:通常表示包含系统或标准库****头文件" ":通常表示包含自己项目****中的头文件
对于 iostream 这种 C++ 标准库头文件,通常写成 <iostream>。
4.2 int main() 是什么
(1)main 为什么这么重要
main 是 程序入口函数。
简单说就是:
一个 C++ 程序运行时,系统会从 main() 这个函数开始执行。
不管你的程序多复杂,最终都必须有一个开始位置,而这个开始位置通常就是 main()。
所以你可以把它理解为:
- 这是程序的起点
- 这是程序"第一步"执行的地方
- 没有它,程序就不知道从哪里开始
(2)为什么只能有一个 main
在一个可执行程序里,main 一般只能定义一次。
因为程序入口只能有一个。
如果写多个 main,编译器就会不知道到底该从哪一个开始执行。
所以你要记住一点:
一个程序只能有一个主函数 main()。
(3)int 是什么意思
int 是 整数类型,这里它表示:
main() 这个函数执行结束后,会返回一个整数值给操作系统。
也就是说,main() 不只是程序入口,它还是一个函数;既然是函数,就有返回值类型。
这里的返回类型写成 int,表示返回一个整数。
通常:
- 返回
0:表示程序正常结束- 返回非 0:通常表示程序异常或出错
例如下面这种写法更完整:
cpp
#include <iostream>
int main()
{
std::cout << "Hello World!\n";
return 0;
}
这表示程序执行成功后返回 0。
(4)为什么有时候没写 return 0;
这在现代 C++ 中通常也是可以的。
因为对于 main() 来说,如果执行到结尾没有显式写返回值,编译器通常会默认补一个 return 0;
(5)() 是什么
**函数名后面的圆括号 () 表示:**这是一个函数。
在这里:
cpp
main()
表示定义了一个名为 main 的函数。
括号里本来是可以写参数的,例如:
cpp
int add(int a, int b)
但当前这个例子中,main() 后面没有参数,所以括号里为空。
你现在可以先记住:
- 函数名后面有括号,表示这是函数
- 括号里面可以放参数
- 当前这段代码先不用管参数,后面学函数时会详细接触
4.3 {} 大括号有什么作用
(1)它表示代码块
{} 表示一个代码块。
例如:
cpp
int main()
{
std::cout << "Hello World!\n";
}
这里的大括号表示:
main() 这个函数中的代码范围,从左大括号开始,到右大括号结束。
也就是说,大括号里面的内容都属于这个函数。
(2)为什么 C++ 离不开大括号
在 C++ 中,大括号非常重要,因为很多结构都依赖它来界定范围,例如:
- 函数体
- if 语句
- for 循环
- while 循环
- 类定义
- 命名空间
所以你可以把大括号理解成:
划定"这一块代码属于谁"的边界。
4.4 std::cout 是什么
(1)它是标准输出对象
cout 的意思可以理解为:
character output,字符输出。
它用于把内容输出到标准输出设备,通常就是控制台窗口。
而完整写法是:
cpp
std::cout
表示它位于 std 这个命名空间中。
(2)为什么前面要加 std::
因为 C++ 标准库里的很多内容都放在 std 命名空间中。
所以在使用 cout 时,要写成:
cpp
std::cout
这里的**::** 叫做 作用域解析运算符,意思相当于:
到 std 这个作用域里去找 cout。
你可以简单理解为:
- **
std**是一个"名字仓库"cout是这个仓库里的一个工具std::cout就是在说:使用标准库里的cout
(3)为什么不能直接写 cout
因为编译器默认并不知道你说的 cout 是哪个 cout。
C++ 里可能有不同作用域、不同库中的同名标识符。
所以标准写法是:
cpp
std::cout
后面你会学到一种简化写法:
cpp
using namespace std;
这样可以临时省略 std::,直接写 cout。
但对于初学阶段,我更建议你保留 std::,因为这样能帮助你更清楚地理解:
这个东西来自标准库。
4.5 << 是什么
(1)它在这里表示"输出"
在下面这句里:
cpp
std::cout << "Hello World!\n";
<< 的作用可以先理解为:
把右边的内容送给左边的输出对象。
也就是说:
- 左边
std::cout是输出目标- 右边
"Hello World!\n"是要输出的内容<<表示把内容传给输出流
所以整句话的意思就是:
让控制台输出 Hello World!,然后换行。
(2)为什么符号长得像左移运算符
确实,
<<在 C++ 里本来也是一个运算符,叫左移运算符 。但在流输出场景里,它被重载成了输出运算符。
这也是 C++ 的一个特点:
同一个符号,在不同上下文里可能有不同含义。
对于初学者,你先不用纠结重载机制,只要先记住:
- 在
std::cout << ...里,<<表示输出- 它的读取方式就是"把右边内容输出到左边"
(3)它可以连续输出多个内容
例如:
cpp
std::cout << "我的年龄是:" << 18 << "\n";
这表示连续把多个内容输出到控制台。
所以 << 后面不一定只能接字符串,还可以接:
- 整数
- 小数
- 字符
- 变量
- 表达式结果
4.6 "Hello World!\n" 是什么
(1)双引号里的内容叫字符串常量
cpp
"Hello World!\n"
这是一段字符串。
在 C++ 中,用双引号括起来的一串字符,通常表示****字符串字面量。
例如:
cpp
"你好"
"abc"
"C++"
都属于字符串。
(2)为什么一定要加双引号
如果不写双引号:
cpp
Hello World!
编译器会把它当成一些它看不懂的标识符,而不是文本内容。
所以双引号的作用就是告诉编译器:
这是一段普通文本,请按字符内容处理。
(3)\n 是什么意思
\n 是一个转义字符,表示换行。
所以:
cpp
"Hello World!\n"
实际上表示的是:
- 先输出
Hello World!- 然后光标移动到下一行
如果没有 \n,下一次输出内容时就可能会接在同一行后面。
4.7 ; 分号有什么作用
(1)它表示一条语句结束
在 C++ 中,分号通常表示:
这一条语句到这里结束。
(2)为什么分号不能省略
如果漏掉分号,编译器会报错,因为它无法正确判断这条语句在哪里结束。
所以分号在 C++ 中非常关键。
很多初学者写程序报错,原因并不是逻辑复杂,而只是漏了一个分号。
五、把整段代码重新翻译一遍
现在我们已经把每个部分都拆开了,再来重新理解整段代码:
cpp
#include <iostream>
int main()
{
std::cout << "Hello World!\n";
}
它的意思就是:
- 引入输入输出功能对应的头文件
iostream- 定义一个名为
main的函数,程序从这里开始执行- 在函数体内部,通过
std::cout向控制台输出字符串Hello World!\n让输出后换行- 分号表示这条输出语句结束
- 大括号表示
main函数的代码范围
六、本小节需要掌握的内容
学完这一节后,至少应该掌握下面这些最核心的点:
(1)#include <iostream>
用于引入标准输入输出相关功能。
(2)main()
程序入口,程序从这里开始执行。
(3)int
表示函数返回一个整数值。
(4){}
表示函数体,也就是代码块范围。
(5)std::cout
标准输出对象,用于向控制台输出内容。
(6)<<
输出运算符,把右边内容送到左边的输出流中。
(7)双引号
表示字符串内容。
(8)\n
表示换行。
(9);
表示一条语句结束。
七、总结
Hello World 虽然是 C++ 中最简单的程序,但它并不只是"打印一句话"这么简单。
它其实是你理解 C++ 程序结构的第一扇门。
通过这一个程序,你已经接触到了:
- 头文件
- 程序入口
- 函数
- 代码块
- 标准输出
- 字符串
- 转义字符
- 语句结束符