《C++程序设计教程(第2版)》的第四章主要介绍了数组与字符串相关的概念和操作。数组在C++编程中扮演着基础且重要的角色,它们是存储相同类型数据的集合,可以是一维、二维或多维。
4.1 数组
1. 一维数组:一维数组是最基础的数组形式,它由具有相同数据类型的多个元素组成,每个元素通过唯一的下标(通常从0开始)来区分。例如,`int array[10]`定义了一个包含10个整数元素的数组。数组在内存中是连续存储的,数组的首地址即为第一个元素的地址。
2. 二维数组:二维数组可以看作是由多个一维数组构成的,它有两层下标,用于表示行和列。例如,`int matrix[3][4]`定义了一个3行4列的二维数组。二维数组在内存中按照行优先的方式存储,即先存储第一行的所有元素,然后是第二行,以此类推。
3. 多维数组:多于两层下标的数组称为多维数组,可以进一步扩展到三维、四维等,以适应更复杂的数据结构需求。
4.1.1 一维数组初始化
- 初始化时可以给所有或部分元素赋值,未指定的元素会自动初始化为对应类型的默认值(如整型为0,字符型为'\0')。
- 初始化的例子包括:
- `int a[10] = {0,1,2,3,4,5,6,7,8,9}`,给所有元素赋值。
- `int b[5] = {1,2,3,4,5}`,省略数组长度,C++会根据初始值数量推断长度。
- `int c[10] = {0,1,2,3,4}`,只给前五个元素赋值,其余元素默认为0。
4.2 字符型数组和字符串处理库函数
1. 字符型数组的定义和初始化:字符型数组(如`char str[10]`)可以用来存储字符串,字符串在C++中是以空字符'\0'作为结束标志的字符序列。初始化时,可以使用双引号括起的字符串字面量,如`char str[] = "Hello"`。
2. 字符串的输入与输出:使用`std::cin`读取字符串,`std::cout`输出字符串。例如,`std::cin >> str`用于从标准输入读取一个字符串到`str`。
3. 字符串处理库函数:C++标准库中的`<cstring>`提供了若干用于处理字符串的函数,如`strlen()`计算字符串长度,`strcpy()`复制字符串,`strcat()`连接字符串,`strcmp()`比较字符串等。
4. 示例代码:例4-1展示了如何使用一维数组存储10个整数,并找出其中的最大值和最小值。通过循环遍历数组,用当前元素与已知最大值或最小值进行比较更新,最后输出结果。
4.2 字符数组的初始化示例:
```cpp
char str[10] = {'H', 'e', 'l', 'l', 'o', '\0'};
```
5. 二维数组初始化:
二维数组的初始化可以按照行或元素顺序进行,例如:
```cpp
int score[3][4] = {{85, 87, 93, 88}, {86, 90, 95, 89}, {78, 91, 82, 95}};
```
这样的初始化方式使得二维数组的每个元素都有明确的初始值。
在实际编程中,理解并熟练运用数组,特别是动态数组和多维数组,对于处理大量数据和构建复杂的数据结构至关重要。同时,掌握字符串处理函数可以提高代码的效率和可读性。在C++中,数组和字符串是编程基础的重要组成部分,为后续学习更高级的概念和技术打下了坚实的基础。