C++ 编程初体验

预计时间: 6分钟

在这本教程中我们实现一个功能:输入你的名字,输出你好某某某

编写C++程序

C++程序必有一个main函数,操作系统调用main函数来运行C++程序。下面的程序什么也没做,只是返回给操作系统一个0值。

int main()
{
  return 0;
}

源文件命名

程序文件通常被称为源文件,文件里的内容通常被称为源代码,通过文件名的后缀是 .cpp 告诉系统这个文件是一个C++程序。

我们将上面的内容保存为 hello.cpp

编译

GCC 默认用 g++ 命令,Clang 默认用 clang++ 命令,但很多编译器也会提供软连接或同名的命令替代GCC命令, 也就是说,一般情况下,无论你安装了什么编译器,都可以用 g++ 命令。

-o hello 表示编译生成的可执行文件名为 hello,如果省略这个参数,默认则生成 a.out 文件。

g++  hello.cpp  -o hello

运行

点表示当前目录,下面命令的意思是运行当前目录下的hello程序。

./hello

查看C++程序的返回值,会看到0

echo $?

概念

函数

一个函数定义包含四部分:

  1. 返回类型
  2. 函数名
  3. 函数形参列表,允许没有形参
  4. 函数体

在上面的例子中,main函数的返回类型是 int,即整数类型, main()小括号内什么也没有,表示形参是空的。函数体由花括号内包含的一个或多个语句组成,上面的函数体只包含一个语句。

类型

类型定义了数据元素的内容和这类数据上可以进行的运算。

程序处理的数据都保存在变量中,每个变量都有自己的类型。我们通常说变量v具有类型T,或者说变量v是一个T类型变量。

输入与输出

C++语言提供了一个标准库来提供IO机制和其它基础设施。接下来我们使用 iostream 库提供的输入输出功能。

istream 表示输入流,ostream 表示输出流,一个流就是一个字符序列,是从IO设备读出或者写入IO设备的。

标准库定义了4个IO对象

  1. cin 标准输入
  2. cout 标准输出
  3. cerr 标准错误
  4. clog 日志输出

接下来我们实现输入一个用户名再输出

#include <iostream>

int main()
{
  std::string firstName;
  std::cout << "输入用户名:" << std::endl;
  std::cin >> firstName;
  std::cout << "你好:" << firstName << std::endl;
  return 0;
}

输出运算符 << 尖号的方向代表了数据流向,把字符串输出到 ostream 对象,上例中是 cout 对象。

输入运算符 >> 尖号的方向代表了数据流向,上例从标准输入读数据保存到变量firstName中。

endl 表示结束当前行,并将与设备关联的缓冲区中的内容刷到设备中。缓冲刷新操作可以保证到目前为止程序所产生的所有输出都真正写入输出流中,而不是仅停留在内存中等待写入流。

前缀 std:: 指出名字 cout 、cin、endl、string 是定义在名为 std 的命名空间(namespace)中的。 命名空间可以避免名字定义冲突,标准库定义的所有名字都在命名空间 std 中。

可以使用 using namespace std; 指定命名空间,就不需要显示指定 std::了,改进后的代码如下

#include <iostream>

using namespace std;

int main()
{
  string firstName;
  cout << "输入用户名:" << endl;
  cin >> firstName;
  cout << "你好:" << firstName << endl;
  return 0;
}

可以在源码中加入注释,注释可以帮助开发者理解程序,编译器会忽略注释,因此注释对程序的行为和性能不会有任何影响。

虽然编译器会忽略注释,但人不会,即使系统文档的其他部分已经过时,程序员也倾向于相信注释的内容是正确可信的。因此,错误的注释比完全没有注释更糟糕,因为它会误导人,因此,当你修改代码时,不要忘记同时更新注释。

单行注释用 // ,多行注释以 /*开始,以*/结束。

更新于2021年05月01日