第七课 数组
前面学习的变量,如数字、字符串是最简单的数据。为了解决更多有趣的问题,我们需要批量存储数据,这就是数组。数组是存储多个相同类型数据的集合。
一、数组定义
类型 数组名[数组长度];
数组定义示例:
int scores[5]; // 定义整型数组,长度为5
int nums[5] = {1,2,3,4,5}; // 定义并初始化
int arr[] = {1,2,3}; // 自动推断长度
float prices[3] = {1.5, 2.5, 3.5}; // 浮点型数组
char name[10] = "Tom"; // 字符数组(字符串)
二、数组访问(下标从0开始)
#include <iostream>
using namespace std;
int main() {
int nums[5] = {10, 20, 30, 40, 50};
// 访问数组元素
cout << nums[0] << endl; // 输出10(第1个元素)
cout << nums[1] << endl; // 输出20(第2个元素)
cout << nums[4] << endl; // 输出50(第5个元素)
// 修改数组元素
nums[0] = 100;
cout << nums[0] << endl; // 输出100
return 0;
}
三、遍历数组
#include <iostream>
using namespace std;
int main() {
int arr[5] = {1, 2, 3, 4, 5};
// for循环遍历
for (int i = 0; i < 5; i++) {
cout << arr[i] << " ";
}
// 输出:1 2 3 4 5
cout << endl;
// 计算数组和
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += arr[i];
}
cout << "总和:" << sum << endl; // 输出15
return 0;
}
四、数组初始化方式
#include <iostream>
using namespace std;
int main() {
// 方式1:完全初始化
int a1[3] = {1, 2, 3};
// 方式2:部分初始化,未指定的默认为0
int a2[5] = {1, 2}; // {1, 2, 0, 0, 0}
// 方式3:不初始化(数组元素值是随机的)
int a3[3];
// 方式4:定义时全部初始化为0
int a4[5] = {0}; // 全部为0
int a5[5] = {}; // 全部为0(C++11)
// 输出验证
for (int i = 0; i < 5; i++) {
cout << a2[i] << " ";
}
// 输出:1 2 0 0 0
return 0;
}
五、二维数组
#include <iostream>
using namespace std;
int main() {
// 定义3行4列的二维数组
int matrix[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
// 访问元素
cout << matrix[0][0] << endl; // 输出1(第1行第1列)
cout << matrix[2][3] << endl; // 输出12(第3行第4列)
// 遍历二维数组
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
cout << matrix[i][j] << "\t";
}
cout << endl;
}
// 输出:
// 1 2 3 4
// 5 6 7 8
// 9 10 11 12
return 0;
}
六、字符数组(C风格字符串)
#include <iostream>
using namespace std;
int main() {
// 方式1:字符数组
char c1[] = {'H', 'e', 'l', 'l', 'o', '\0'}; // 需要手动加'\0'
// 方式2:字符串常量
char c2[] = "Hello"; // 自动加'\0'
// 方式3:指定长度
char c3[10] = "Hi";
// 输出
cout << c1 << endl; // Hello
cout << c2 << endl; // Hello
cout << c3 << endl; // Hi
// 访问单个字符
cout << c2[0] << endl; // H
cout << c2[4] << endl; // o
return 0;
}
七、数组作为函数参数(后续学习)
#include <iostream>
using namespace std;
// 数组作为参数传递
void printArray(int arr[], int n) {
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
int main() {
int nums[5] = {1, 2, 3, 4, 5};
printArray(nums, 5); // 输出:1 2 3 4 5
return 0;
}
注意:C++数组长度固定,定义后不能改变。如果需要动态大小的数组,推荐vector。(后续学习)
