目录
一、C++ 数组初印象
在 C++ 编程的世界里,数组是一种极为基础且重要的数据结构 ,就像是程序世界里的有序集装箱,用来整齐地存放数据。无论是进行数据处理、算法实现,还是开发各种应用程序,数组都扮演着关键角色。比如在统计学生成绩时,可以用数组存储每个学生的分数;在实现排序算法时,待排序的数据也常常存储在数组中。毫不夸张地说,掌握数组的使用是踏入 C++ 编程大门的必备技能。接下来,让我们深入了解 C++ 数组的概念。
二、C++ 数组概念剖析
2.1 数组定义与本质
在 C++ 里,数组是相同类型数据的集合,这些数据在内存中连续存储 。比如我们要存储一个班级学生的数学成绩,就可以定义一个整型数组,因为每个学生的成绩都是整数类型。
下面来看一段简单的代码示例:
int scores[5];
这段代码定义了一个名为scores的整型数组,它可以容纳 5 个整数,这 5 个整数在内存中是一个挨着一个排列的,就像一排紧密相连的小房间,每个小房间都存放着一个整数数据。
2.2 数组声明与初始化方式
2.2.1 声明
数组的声明需要指定元素的类型和数组的大小。比如:
// 声明一个包含10个元素的整型数组
int numbers[10];
// 声明一个包含5个元素的浮点型数组
float prices[5];
// 声明一个包含8个字符的字符型数组
char letters[8];
这里,numbers数组可以存放 10 个整数,prices数组可以存放 5 个浮点数,letters数组可以存放 8 个字符。需要注意的是,数组大小必须是一个常量表达式,即在编译阶段就能确定其值。
2.2.2 初始化
- 完全初始化:在定义数组时,给数组的每个元素都赋初值。例如:
int ages[3] = {18, 20, 22};
这个ages数组的三个元素分别被初始化为 18、20 和 22 ,就像给三个房间分别安排好了对应的客人。
- 部分初始化:只初始化数组的部分元素,未初始化的元素会根据数组类型自动赋初值,对于整型数组,未初始化的元素默认被初始化为 0。比如:
int scores[5] = {90, 85};
这里scores数组的前两个元素被初始化为 90 和 85,后面三个元素会自动初始化为 0。就好像只给前两个房间安排了客人,后面三个房间默认住的是 “0 号客人”。
- 不指定大小的初始化:在初始化时不指定数组大小,编译器会根据初始化列表中的元素个数自动确定数组大小。例如:
int values[] = {1, 3, 5, 7, 9};
此时,编译器会自动识别values数组的大小为 5,因为初始化列表中有 5 个元素 ,就像是根据实际入住的客人数量来确定房间数量。
2.3 数组元素访问
数组通过下标来访问元素,下标从 0 开始。比如对于前面定义的ages数组:
int ages[3] = {18, 20, 22};
int firstAge = ages[0]; // 访问第一个元素,值为18
int secondAge = ages[1]; // 访问第二个元素,值为20
这里ages[0]表示访问ages数组的第一个元素,ages[1]表示访问第二个元素。需要特别注意的是,访问数组元素时,下标不能越界。例如,对于只有 3 个元素的ages数组,如果尝试访问ages[3],就会导致越界访问,这是非常危险的行为,可能会引发程序崩溃或产生未定义的行为。就好比去一个只有三个房间的旅馆,却要找第四个房间,肯定是找不到的,还可能会引发一系列问题。
三、C++ 数组操作全解析
3.1 遍历数组
3.1.1 for 循环遍历
遍历数组最常见的方式之一就是使用 for 循环。通过 for 循环,我们可以依次访问数组中的每一个元素。例如,对于一个存储整数的数组,我们可以这样遍历并输出每个元素:
int numbers[5] = {10, 20, 30, 40, 50};
for (int i = 0; i < 5; i++) {
std::cout << numbers[i] << " ";
}