特别篇 代码思维与能力专项训练(一)

在这一小节中,我们将从新建项目开始,介绍 C++ 中的 Hello World 代码,让同学们对 C++ 代码的最基础结构,有所了解。

1 使用 CLion 新建项目

我们要写代码,代码需要写在后缀名为 .cpp 的文件中,而 .cpp 文件,并不能独立存在,它需要包含在一个项目当中,才能发挥作用。那首先让我们看看如何去新建一个项目吧!

打开 CLion 软件后,可能有两种界面,我们需要根据界面去找到新建项目的入口。

新建项目途径1

新建项目途径2

点击新建项目后,我们会看到这样的界面:

新建项目

作为初学者,我们只需要创建普普通通的 C++ 项目即可,所以我们使用默认的 “C++可执行文件” 即可。

右侧的位置,就是我们要创建的 C++ 项目将要存放在硬盘中的位置。 \ 符号将路径划分为几个部分,最后一部分,就是我们的 项目名 。我们可以根据我们要做的项目,为项目取名。

警告:整个路径中所有文件夹名中,不可以出现任何英文以外的字符,否则项目将无法构建!!!

最后,点击 “创建” 或按 “回车” 键就可以新建项目了。

2 C++ 的 Hello World

对于全世界学习编程的人来说, Hello World 这个词是个特殊的存在。因为按惯例,学习任何一门语言,我们编写的第一个项目总是 Hello World

我们创建项目后,CLion 会自动给我们创建好 Hello World 代码,供我们测试 C++ 语言开发环境是否正常。而我们也可以从 Hello World 来学习最基础的 C++ 代码的组成。

以下是 CLion 提供给我们的 Hello World 代码:

#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

3 Hello World 解读

3.1 导入库文件

Hello World 代码的第一行是 #include <iostream>

这一句的作用,是向我们的代码中,导入一个叫做 iostream 的文件。

“i(input)”是输入的意思,“o(output)”是输出的意思,“stream”是流的意思,整体就是指“ 输入输出流 ”。

导入文件的具体作用,我们之后会详细了解,现在我们可以简单地认为,导入文件后,我们可以让我们的代码,可以使用某些特定功能。对于输入输出流来说,我们导入它之后,就可以从键盘输入文字给程序,也可以让程序输出文字到屏幕。

正因为有了 #include <iostream> ,我们才可以将 Hello, World! 输出到屏幕。

3.2 main() 函数

main() 函数是 C++ 程序的入口

无论是多么复杂的程序,总是需要从一个入口开始运行,所以 C++ 程序都必须有 main() 函数

计算机只是机器,它只会一丝不苟地执行程序员写下的程序,而不懂得自己进行抉择。所以我们的程序只能有一个入口,这样计算机才可以正常找到入口并执行出现。如果有多个入口,计算机就会因为不能确定从哪个入口进入而不知所措。所以 一个 C++ 程序(同一个 C++ 项目文件夹)内,只能有一个main() 函数

3.3 命名空间

接下来,我们看到的是 std::cout 。要理解这一行,我们首先要理解 命名空间 的概念。

代码在电脑中运行时,全部都是 0 和 1 组成的数据而已,但我们在写代码时,为了能更清楚地知道我们在写的代码是干什么的,我们需要为电脑中的那些 0 和 1 组成的数据起一个我们看得懂的名字。

而起名字的人,并不只是我们,比如: C++ 的开发者们,为了方便我们使用 C++ 开发软件,也给很多数据起了名字,那我们在取名字时,就有可能与 C++ 的开发者们取到相同的名字。我们说过,计算机只会一丝不苟的执行程序员给它下的任务,而不会自己抉择。面对两个相同的名字,计算机会不知所措。

这时就需要将两个相同的名字进行区分。这就是 命名空间 的作用了。命名空间就像一个花名册,不同的人给数据起的名字记录在不同的花名册中。我们需要使用一个名字时,让计算机去特定的花名册中寻找就可以了。这样就不会面临两个相同的名字无法区分的情况了。

std 是 standard(标准、规范) 的缩写,是 C++ 标准命名空间。 C++ 开发者们取的名字几乎都在 std 命名空间中。

:: 是作用域标识符。 std::cout 的意思,其实就是告诉计算机,要在 std 这个花名册中,去找 cout 这个名字。

我们在写代码时,往往需要使用非常多, C++ 的开发者们起的名字,在每个名字之前,写 std:: 就很麻烦,所以我们常常在我们写的代码开头,写上 using namespace std; ,代表着我们告诉计算机,我们写的代码中,使用了 std 这个花名册中的名字,如果计算机看到不认识的名字,就请去 std 这个花名册中找找。这样, C++ 的 Hello World 程序可以改成这样:

#include <iostream>

using namespace std;

int main() {
    cout << "Hello, World!" << endl;
    return 0;
}

3.4 cout

其实就是 “C++ output” 的缩写。使用它就可以向屏幕输出它后面的内容。 << 符号,被称为流插入运算符,使用这个这个符号,可以将它后面的项传递给 cout ,从而输出内容。

endl 是 “end line” 的缩写,作用是结束一行,也就是换行。

3.5 return 0

对于 main() 函数来说,它需要一个整数作为返回值,用于告诉使用程序的人,这个程序运行结束,究竟是做完这个程序应该做的事情之后,正常结束了;还是说,程序出了问题,不得不结束了。

按惯例,我们使用 0 ,作为程序正常结束的标志。

4 Hello World 运行与结果

我们点击 “运行” 按钮,就可以尝试运行我们写的代码。运行代码右边的小虫子图标,是 “调试” 的意思,我们也常用。

运行按钮

运行后的结果,会显示在底部。

运行结果

第一行是我们写的代码,经过编译后生成的可执行文件的位置。

第二行开始,是我们代码向屏幕输出的内容。

最后一行,是我们代码结束时的返回值。因为我们在代码中写了 return 0; ,如果程序正常结束,就返回 0 ,所以退出代码是 0 。