【C++ 入门】第一个程序:Hello World 与基本语法规则

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; 使用标准命名空间 :标准库中的名字(如 coutendl)都在 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++!

要求:

  1. 使用两次 cout 语句。
  2. 在第二行末尾换行。
  3. 保持 return 0;

总结:今天我们写了第一个 C++ 程序,了解了基本语法规则,并用内存模型简单看到了程序运行时的分区。下一篇文章我们将深入讲解变量与常量。

如果你完成了练习题,欢迎在评论区贴上你的输出截图~

相关推荐
ShineWinsu2 分钟前
对于C++中unordered_map的详细介绍
数据结构·c++·算法·面试·stl·哈希表·unordered_map
东东最爱敲键盘6 分钟前
day3.c++函数与预处理 string
c++·算法
七夜zippoe11 分钟前
基于 DolphinDB 构建全流程质量追溯体系:从原材料到成品的全链路追踪
大数据·人工智能·算法·全链路·dolphindb·质量追溯
rannn_11140 分钟前
【力扣hot100】238、41、73题解
java·算法·leetcode·开发
在世修行40 分钟前
从零打造 C# 工业视觉检测系统(十一):Task 异步编程与实时性保障
开发语言·c#·task异步
QN1幻化引擎44 分钟前
认知场的涌现动力学:结构证明、Phi度量与意识签名电池
人工智能·深度学习·神经网络·算法·机器学习·agi
lingran__1 小时前
C++ 高阶数据结构:AVL 树万字详解|原理、四种旋转、key‑value 实现、调试校验、set/map/红黑树 底层前置知识
数据结构·c++·二叉搜索树·平衡二叉树·avl树·红黑树前置
爱和冰阔落1 小时前
【Linux】两个毫无关系的进程怎么通信?命名管道 FIFO 从原理到 Server/Client 实战
android·linux·数据库·c++·vim
码匠许师傅9 小时前
【C++ 面试真题】C++ 的 const 和 constexpr 有什么区别?
c++·面试
坚持编程的菜鸟10 小时前
模拟实现memmove
c语言·算法·模拟实现memmove