一点点C++入门知识

在开始之前,我们期望读者是有一定的编程基础的,了解基本的结构化程序设计思想,比如基本的执行结构和数据类型等。本书使用C++作为主要的编程语言,如果未曾有过相关学习经历,或者对C++的一些细节并不熟悉,这一章我们会对所用到的内容进行一些简短的介绍,以便于读者能够更好地理解后文的内容。如果你想了解关于更多的C++的知识,请参考Bjane Stroustrup的《The C++ Programming Language》或者Stanly Lipman的《C++ Primer》。

基本结构

让我们来看一个基本的C++程序。

#include <iostream>
#include <string>

int main() {
    std::string kimmy {"Kimmy Leo"};
    std::cout << "hello " << kimmy;
}

我们从每一行入手来分析这个程序。 第1、2行是以#打头的两个include预处理指令。C++通过头文件(header file)的方式来对外提供和引用第三方接口(interface),iostreamstring就是C++标准库中的两个头文件。include指令就是告诉编译器把这两个文件的内容包含到当前程序中来,因为里面有我们所需要的内容的声明(declaration)。

第4行开始定义了一个名字为main的函数,这个函数返回值为int,参数列表(在()之间的内容)为空。{表示函数体的开始,直到第7行的}符号结束。

第5行声明了一个std::string(C++标准库的字符串)类型的变量,变量名叫做kimmy,花括号之间的内容就是这个变量的值,也即,内容为Kimmy Leo的字符串。C++中,通过"来包括字符串,来避免与其他符号混淆。 第6行,我们调用标准输出流std::cout,通过流输出运算符<<来输出两个字符串的内容:一个是字符串字面量:"hello ",另一个是字符串变量kimmy

其中std表示我们引用的是命名空间(namespace)std下面的符号,std是standard的简写,表示C++的标准库。::作为分隔符来连接不同的符号,来表示符号间的归属关系。

对于每一个标准的C++程序,都会采用main函数作为其入口,所以我们需要定义一个main函数。一个函数是由一系列语句构成的,比如第5行的变量定义和第6行的输出语句。语句会在编译后生成可以由CPU解析执行的指令,从而完成整个程序的逻辑。

变量是程序的基本组成部分,用来标记和表示程序运行时的数据。同样,变量通常的实现形式是一部分特定的内存空间。这样就能够通过语句控制来完成各种数据运算操作。

变量,类型,声明和赋值

每一个变量都是有特定类型(type)的。比如上文程序中的kimmy,就是一个字符串类型的变量,比如std::cout,就是一个输出流类型的变量。通常,我们会简单的通过类型来描述一个变量,比如说kimmy是一个字符串,std::cout是一个标准输出流,等等。

类型

变量的类型用来描述变量的基本结构和内容。比如,一个变量是整数,还是字符串,这对于C++程序来说是很重要的:如我们前面所说,对于每一个变量,都是内存的一部分,所以运行时需要知道每一个变量的结构,才能正常的读取和解析其中的数据。

C++中基本的类型有以下几类:

类型 备注
数值类型 比如,整数 int,长整数 long,用来表示在指定范围内的整数
浮点类型 比如,单精度浮点类型 float,双精度浮点类型 double,用来表示有限精度和范围的有理数
布尔类型 bool,用来表示逻辑(true)真或者假(false)
复合类型 比如引用和指针,类、结构和union

关于数值类型和浮点类型的细节我们会在第4章编码中详细提及,关于指针/引用的内容详见第6章,关于类和结构的内容,详见第7章及以后的内容。

声明和赋值

每一个变量在使用之前必须被声明。在读取其内容之前必须经过初始化或者赋值。变量声明的方法及在变量前面加上该变量的类型,比如std::string kimmy。变量声明时会进行默认初始化,或者提供初始化的参数来初始化成特定的值。

results matching ""

    No results matching ""