第九课:数组与字符串
学习目标:
- 理解并能够使用一维和多维数组。
- 掌握数组的声明、初始化、访问和遍历。
- 学习C++中字符串的处理,包括C风格字符串和
string
类的基本使用。 - 理解数组在内存中的存储方式以及如何使用数组和指针的关系。
学习内容:
-
一维数组
-
概念讲解:
一维数组是同一类型元素的线性集合。在内存中,这些元素是连续存储的。 -
声明数组
- 语法:
元素类型 数组名[数组大小];
- 例如:
int numbers[10];
声明了一个可以存储10个整数的数组。
- 语法:
-
初始化数组
- 在声明的时候可以初始化:
int numbers[5] = {1, 2, 3, 4, 5};
- 如果在初始化时不指定数组大小,编译器会根据提供的元素数量自动确定大小。
- 在声明的时候可以初始化:
-
访问数组元素
- 使用索引来访问:
numbers[0]
访问第一个元素,索引从0开始。 - 数组越界访问是未定义行为,可能导致运行时错误。
- 使用索引来访问:
-
遍历数组
- 使用循环结构,如
for
循环,可遍历数组元素。
- 使用循环结构,如
-
代码示例:
#include <iostream> using namespace std; int main() { int numbers[5] = {1, 2, 3, 4, 5}; for(int i = 0; i < 5; i++) { cout << numbers[i] << ' '; } cout << endl; return 0; }
-
预计输出效果:
1 2 3 4 5
-
-
多维数组
-
概念讲解:
多维数组可以看作是数组的数组。二维数组常用于表示矩阵、棋盘等。 -
声明和初始化
- 二维数组的声明:
元素类型 数组名[行数][列数];
- 初始化:
int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};
- 二维数组的声明:
-
访问和遍历
- 使用双层循环遍历二维数组的每个元素。
-
代码示例:
#include <iostream> using namespace std; int main() { int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}}; for(int i = 0; i < 2; i++) { for(int j = 0; j < 3; j++) { cout << matrix[i][j] << ' '; } cout << endl; } return 0; }
-
预计输出效果:
1 2 3 4 5 6
-
-
字符串和字符数组
-
概念讲解:
字符数组用来存储字符序列,以空字符\0
结尾。C++中也可以使用string
类来处理字符串,它是C++标准库的一部分,提供了丰富的字符串操作功能。 -
C风格字符串
- 声明:
char str[6] = "Hello";
- C风格字符串以
\0
结尾。
- 声明:
-
string类
- 声明:
string str = "Hello";
string
类有许多成员函数,如length()
,append()
,find()
, 等等。
- 声明:
-
代码示例:
#include <iostream> #include <string> using namespace std; int main() { char cStyleStr[6] = "Hello"; string cppStr = "Hello"; cout << "C-style string: " << cStyleStr << endl; cout << "C++ string: " << cppStr << endl; return 0; }
-
预计输出效果:
C-style string: Hello C++ string: Hello
-
练习题:
编写一个程序,创建一个整型的一维数组,并使用循环将数组中的元素设置为其索引值的平方。然后再次使用循环打印这些值。
练习答案:
#include <iostream>
using namespace std;
int main() {
const int size = 10;
int squares[size];
// 初始化数组
for(int i = 0; i < size; i++) {
squares[i] = i * i;
}
// 打印数组元素
cout << "Square of indices:" << endl;
for(int i = 0; i < size; i++) {
cout << squares[i] << ' ';
}
cout << endl;
return 0;
}
// 预计输出:
// Square of indices:
// 0 1 4 9 16 25 36 49 64 81
这个练习通过计算索引的平方来填充数组,然后打印出数组的内容。它强调了数组的初始化、索引访问和循环遍历。