1. 第一个 C++ 程序
让我们从最经典的 Hello World 开始:
cpp
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!" << endl;
return 0;
}
运行结果:
Hello World!
2. 逐行解释(基本语法规则)
| 代码 | 含义 |
|---|---|
#include <iostream> |
预处理指令 :将输入输出流库的头文件包含进来,这样我们才能使用 cout 输出内容。 |
using namespace std; |
使用标准命名空间 :标准库中的名字(如 cout、endl)都在 std 命名空间里,加上这句后可以直接写 cout,否则要写 std::cout。 |
int main() |
主函数 :每个 C++ 程序必须有一个 main 函数,程序从这里开始执行。int 表示返回值类型是整数。 |
{ ... } |
函数体:花括号内的代码是函数要执行的内容。 |
cout << "Hello World!" << endl; |
输出语句 :将字符串 "Hello World!" 送到控制台,endl 表示换行并刷新输出缓冲区。 |
return 0; |
返回语句:向操作系统返回 0,表示程序正常结束。 |
补充规则:
- C++ 中每条语句以 分号
;结束。 - 注释:
// 单行注释或/* 多行注释 */。 - 大小写敏感:
main不能写成Main。
3. 内存模型讲解(浅显易懂)
当你运行这个 Hello World 程序时,操作系统会把程序加载到内存中。内存分为几个"区域":
┌─────────────────┐ 高地址
│ 栈 (Stack) │ ← 存放局部变量、函数调用信息
├─────────────────┤ (本例中 main 函数的栈帧)
│ 堆 (Heap) │ ← 动态分配的内存(new/malloc)
├─────────────────┤ 本例未使用
│ 数据段 (Data) │ ← 全局变量、静态变量(本例无)
├─────────────────┤
│ 代码段 (Code) │ ← 存放程序的二进制指令(main 函数的指令)
└─────────────────┘ 低地址
我们程序的简单内存布局:
- 代码段 :存放
#include展开后的 iostream 库函数代码,以及我们写的main函数的机器指令(比如cout << ...对应的指令)。 - 栈 :当调用
main函数时,系统会在栈上为main分配一块空间(栈帧),里面保存了返回地址、局部变量等。虽然本例没有显式局部变量,但cout操作会临时使用一些栈空间。 - 常量区 (通常合并到代码段或只读数据段):字符串字面量
"Hello World!"被存放在只读区域,cout指令会从那里读取数据并输出。
🔍 你不需要现在完全理解所有内存区域,只需要知道:程序运行时,指令在代码段,局部变量在栈上,字符串字面量在只读区域。
4. 常见错误与避坑
| 错误写法 | 问题 |
|---|---|
include <iostream> 忘了 # |
预处理指令必须从 # 开始 |
int main() 后面忘了 { |
函数体必须用花括号 |
cout 写成 Cout |
C++ 大小写敏感 |
语句末尾忘了 ; |
会报编译错误 |
return 0 忘了 ; |
同上 |
5. 练习题
题目 :
修改上面的
Hello World程序,让它在两行分别输出:
My name is [你的名字] I am learning C++!要求:
- 使用两次
cout语句。- 在第二行末尾换行。
- 保持
return 0;。
总结:今天我们写了第一个 C++ 程序,了解了基本语法规则,并用内存模型简单看到了程序运行时的分区。下一篇文章我们将深入讲解变量与常量。
如果你完成了练习题,欢迎在评论区贴上你的输出截图~