简介
在本实验中,你将学习如何编写第一个 C++ 程序。首先,你将在 Ubuntu 22.04 上安装 GCC (GNU Compiler Collection) 编译器并配置必要的环境变量。接着,你将创建一个新的 C++ 源代码文件,编写程序的基本结构,并使用 cout 语句打印「Hello World」消息。此外,你还将学习如何编译和执行程序,以及如何添加单行和多行注释、使用 endl 和 \n 进行换行,并修复诸如缺少分号之类的常见语法错误。
在 Ubuntu 22.04 上安装 GCC 编译器并配置环境变量
在这一步中,你将学习如何在 Ubuntu 22.04 上安装用于 C++ 的 GCC (GNU Compiler Collection) 编译器并配置必要的环境变量。GCC 对于编译和运行 C++ 程序至关重要。
首先,让我们在 WebIDE 中打开终端。你可以通过点击屏幕底部的终端图标或使用键盘快捷键(通常是 Ctrl+`)来完成。
我们先更新软件包列表,以确保获取到有关可用软件包的最新信息:
sudo apt update
输出示例:
Hit:1 http://mirrors.cloud.aliyuncs.com/ubuntu jammy InRelease
Hit:2 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-updates InRelease
Hit:3 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-backports InRelease
Hit:4 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-security InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
157 packages can be upgraded. Run 'apt list --upgradable' to see them.

接下来,我们将安装 GCC 编译器及相关的开发工具:
sudo apt install -y build-essential
输出示例:
Reading package lists...
Building dependency tree...
Reading state information...
build-essential is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 22 not upgraded.
要验证安装并检查 GCC 版本,请运行:
g++ --version
输出示例:
g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
GCC 编译器通常已经包含在系统 PATH 中,因此无需进行额外配置。
创建带有 .cpp 扩展名的新 C++ 源代码文件
在这一步中,你将学习如何创建一个带有 .cpp 扩展名的新 C++ 源代码文件。在 C++ 中,源代码文件使用 .cpp 扩展名,以表明它们包含 C++ 代码。我们将使用 WebIDE 的文件资源管理器和文本编辑器来创建我们的第一个 C++ 源代码文件。
首先,在终端中导航到 ~/project 目录:
cd ~/project
现在,打开 WebIDE 的文件资源管理器。你会看到一个包含文件和文件夹列表的侧边栏。找到允许创建新文件的图标——它可能看起来像一个「+」号或「New File」选项。
在文件资源管理器中右键点击并选择「New File」。当提示输入名称时,将其命名为 hello.cpp。.cpp 扩展名至关重要,因为它告诉编译器和开发工具这是一个 C++ 源代码文件。
终端中的文件创建示例(供参考):
touch hello.cpp
点击新创建的 hello.cpp 文件,在 WebIDE 的文本编辑器中打开它。你将看到一个空白文件,准备好编写你的第一个 C++ 代码。
使用 .cpp 扩展名很重要,原因如下:
- 它将文件标识为 C++ 源代码文件
- 帮助开发工具和编译器识别文件类型
- 将 C++ 文件与其他编程语言文件(如
.c(C)、.java(Java) 或.py(Python))区分开来
此时,你的 hello.cpp 文件已准备就绪,可以开始编写 C++ 代码了。在接下来的步骤中,你将学习如何在此文件中编写一个基本的 C++ 程序。
使用 int main() 函数编写程序基本结构
在这一步中,你将了解 C++ 程序的基本结构,重点是 main() 函数。每个 C++ 程序都必须有一个 main() 函数,它是程序开始执行的入口点。
在 WebIDE 中打开你在上一步创建的 hello.cpp 文件。现在我们将添加程序的基本结构:
#include <iostream>
int main() {
// Your code will go here
return 0;
}
注意: 建议手动输入代码以获得更好的学习效果。请注意花括号
{ }和分号;,因为它们在 C++ 语法中至关重要。不要忘记空格和缩进,否则步骤验证可能会失败。
让我们剖析一下这个基本结构:
#include <iostream>:这是一个预处理指令,用于包含输入/输出流库。它允许我们使用输入和输出操作,例如打印到屏幕。int main():这是主函数声明int指定函数将返回一个整数值main()是 C++ 程序的标准入口点- 空括号
()表示该函数不接受任何参数
- 花括号
{ }:定义函数体,你的代码将写在这里 return 0;:表示程序成功完成- 返回 0 告诉操作系统程序运行没有错误
- 这是 C++ 程序中的标准做法
WebIDE 会在你输入时自动保存更改。或者,你可以使用编辑器的保存选项手动保存文件。
如果你想了解更多关于 WebIDE 的信息,请查看 WebIDE 指南。
需要记住的一些要点:
- 每个 C++ 程序都必须有一个
main()函数 main()函数是程序执行开始的地方return 0;语句通常用于指示程序执行成功
你可以将 main() 函数想象成旅程的起点。就像公路旅行从特定地点开始一样,C++ 程序从 main() 函数开始执行。
使用 cout 打印 Hello World 消息
在这一步中,你将学习如何使用 cout 在屏幕上打印「Hello, World!」消息。cout 是 C++ 标准输入/输出库的一部分,用于显示输出。
在 WebIDE 中打开 hello.cpp 文件,并修改 main() 函数以包含以下代码:
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
让我们剖析一下这行新代码:
std::cout:这是标准输出流对象std::表示我们正在使用标准命名空间cout代表「console output」(控制台输出)
<<:流插入运算符,用于将数据发送到输出流"Hello, World!":我们想要打印的文本消息std::endl:添加一个新行并刷新输出缓冲区- 确保消息立即显示
- 将光标移动到下一行
保存文件时,请确保包含上述显示的完整结构。
关于 cout 的一些关键点:
- 它用于将文本、数字和其他数据类型打印到屏幕上
<<运算符可以链式使用以打印多个项目std::endl用于在打印后创建新行
你可以将 cout 想象成一个向世界宣布你消息的扩音器。<< 运算符帮助你加载消息,而 std::endl 确保每个人都能清晰地听到它。
使用 g++ hello.cpp -o hello 命令编译程序
在这一步中,你将学习如何使用 g++ 编译器编译你的 C++ 程序。编译是将人类可读的 C++ 源代码转换为计算机可以运行的可执行程序的过程。
在 WebIDE 中打开终端。确保你位于 ~/project 目录中:
cd ~/project
现在,让我们使用 g++ 命令编译你之前创建的 hello.cpp 文件:
g++ hello.cpp -o hello
让我们剖析一下这个命令:
g++:GNU C++ 编译器hello.cpp:你想要编译的源代码文件-o hello:指定输出的可执行文件名-o是一个让你命名输出文件的选项hello是你将创建的可执行文件的名称
输出示例:
## No output means successful compilation
如果编译成功,将不会显示任何错误消息。编译器会在同一目录下创建一个名为 hello 的可执行文件。

要验证编译,你可以检查目录中的文件:
ls
输出示例:
hello hello.cpp
现在你应该看到两个文件:
hello.cpp:你的源代码文件hello:编译后的可执行程序
一些重要的编译说明:
- 如果你的代码中有任何错误,
g++将显示错误消息 - 在尝试运行程序之前,请务必检查并修复任何编译错误
-o选项是可选的,但为你的可执行文件起一个有意义的名字是一个好习惯
你可以将编译想象成将一本书从一种语言翻译成另一种语言。g++ 编译器将你人类可读的 C++ 代码翻译成计算机可以理解和执行的语言。
使用 ./hello 命令执行程序
在这一步中,你将学习如何运行刚刚编译的可执行程序。编译 C++ 程序后,你可以使用 ./ 命令后跟可执行文件名来执行它。
确保你位于 ~/project 目录中:
cd ~/project
要运行你在上一步中编译的程序,请使用以下命令:
./hello
./ 告诉系统在当前目录中查找可执行文件,而 hello 是你创建的可执行文件的名称。
输出示例:
Hello, World!
让我们剖析一下发生了什么:
./的意思是「在当前目录中」- 程序读取你编译后的可执行文件中的指令
- 它打印你在 C++ 源代码中定义的消息
- 打印后,程序退出
一些重要的执行说明:
- 在当前目录中运行程序时,请务必在可执行文件名之前使用
./ - 程序必须具有执行权限(
g++会自动提供) - 如果你没有看到输出,请仔细检查你是否正确编译了程序
你可以将执行程序想象成启动汽车。编译是准备汽车,而运行程序则是转动钥匙并驾驶。
如果你想多次运行该程序,只需重复 ./hello 命令即可。
添加单行和多行注释
在这一步中,你将学习如何向 C++ 代码添加注释。注释是你代码中的说明,解释了代码的功能。它们会被编译器忽略,并有助于提高代码的可读性。
在 WebIDE 中打开 hello.cpp 文件,并修改它以包含不同类型的注释:
#include <iostream>
// This is a single-line comment
// It explains what the program does
/*
This is a multi-line comment
You can write multiple lines of explanation
Without worrying about adding // to each line
*/
int main() {
// Print a greeting message
std::cout << "Hello, World!" << std::endl; // Inline comment explaining the output
/*
You can also use multi-line comments
in the middle of your code if needed
*/
return 0; // Return success status to the operating system
}
让我们剖析一下注释的类型:
单行注释:
- 以
//开头 - 延伸到行尾
- 非常适合简短的解释
- 以
多行注释:
- 以
/*开头 - 以
*/结尾 - 可以跨越多行
- 对于较长的解释很有用
- 以
行内注释:
- 添加在代码行的末尾
- 解释特定的代码行
编译并运行程序以验证它仍然有效:
g++ hello.cpp -o hello
./hello
输出示例:
Hello, World!
关于注释的一些关键点:
- 注释使你的代码更易于理解
- 它们帮助其他程序员(以及你自己)理解代码的目的
- 编译器完全忽略注释
- 使用注释来解释「为什么」这样做,而不是「做了什么」
你可以将注释想象成书中的便利贴。它们提供了额外的上下文和解释,而不会改变实际的文本。
使用 endl 和 \n 进行换行
在这一步中,你将学习在 C++ 输出中创建换行的两种方法:std::endl 和换行符 \n。这两种方法都可以帮助你格式化跨多行的输出。
在 WebIDE 中打开 hello.cpp 文件,并修改它以演示换行:
#include <iostream>
int main() {
// Using std::endl for line breaks
std::cout << "Hello, World!" << std::endl;
std::cout << "Welcome to C++ Programming!" << std::endl;
// Using \n for line breaks
std::cout << "Using newline character:\n";
std::cout << "Line 1\n";
std::cout << "Line 2\n";
// Mixing both methods
std::cout << "Mixing methods: " << std::endl;
std::cout << "Line with endl\n";
std::cout << "Line with newline character" << std::endl;
return 0;
}
👆 LabEx 提示: 点击代码块右下角的「Explain Code」(解释代码)与 Labby AI 聊天,获取代码说明。
让我们剖析一下换行方法:
std::endl:- 添加一个新行
- 刷新输出缓冲区(确保立即打印)
- 是
<iostream>库的一部分 - 与
std::cout一起使用
\n(换行符):- 创建新行的简单方法
- 比
std::endl更轻量 - 在许多编程环境中都有效
- 不会刷新输出缓冲区
编译并运行程序:
g++ hello.cpp -o hello
./hello
输出示例:
Hello, World!
Welcome to C++ Programming!
Using newline character:
Line 1
Line 2
Mixing methods:
Line with endl
Line with newline character
关键点:
std::endl和\n都可以创建新行std::endl更全面但稍慢\n更快且更轻量- 你可以混合使用这些方法
你可以将换行符想象成书中的段落分隔符。它们有助于组织和结构化你的输出。
修复诸如缺少分号之类的常见语法错误
在这一步中,你将了解 C++ 中的常见语法错误,重点是缺少分号。分号在 C++ 中至关重要,因为它们标记了语句的结束。
在 WebIDE 中创建一个名为 syntax_errors.cpp 的新文件:
cd ~/project
touch syntax_errors.cpp
#include <iostream>
int main() {
// Common syntax error: Missing semicolon
std::cout << "This line has an error" // Missing semicolon here!
std::cout << "This line will not compile" << std::endl;
// Correct version with semicolons
std::cout << "This line is correct" << std::endl;
std::cout << "All statements end with a semicolon" << std::endl;
return 0; // Don't forget the semicolon here too!
}
尝试编译程序:
g++ syntax_errors.cpp -o syntax_errors
编译错误示例:
syntax_errors.cpp: In function ‘int main’:
syntax_errors.cpp:5:42: error: expected ‘;’ before ‘std’
5 | std::cout << "This line has an error" // Missing semicolon here!
| ^
| ;
6 | std::cout << "This line will not compile" << std::endl;
| ~~~
关于分号的关键点:
- C++ 中的每个语句都必须以分号
;结尾 - 分号告诉编译器一条指令在哪里结束,另一条在哪里开始
- 缺少分号会导致编译错误
- 容易忘记分号的常见地方:
cout语句之后return语句之后- 变量声明的末尾
让我们修复错误:
- 添加缺失的分号
- 确保每个语句都以
;结尾
编译更正后的版本:
g++ syntax_errors.cpp -o syntax_errors
./syntax_errors
如果成功,将不会出现错误消息。
你可以将分号想象成句子中的句号。它们标记了你代码中完整思想的结束。
总结
在本实验中,你学习了如何在 Ubuntu 22.04 上安装用于 C++ 的 GCC (GNU Compiler Collection) 编译器并配置必要的环境变量。你创建了一个新的 C++ 源代码文件,编写了带有 int main() 函数的程序基本结构,并使用 cout 打印了「Hello World」消息。随后,你使用 g++ 命令编译了程序并执行了它。此外,你还学习了如何添加单行和多行注释、使用 endl 和 \n 进行换行,并修复了诸如缺少分号之类的常见语法错误。
完成这些步骤后,你将为编写和运行第一个 C++ 程序打下坚实的基础,并理解在 Ubuntu 22.04 上进行 C++ 开发所需的基本工具和概念。



