一、什么是二维数组
在C++中,数组是一种定义有序数据集合的数据结构。二维数组是指数组的元素也是数组的一种。它是由多个一维数组组成,并按照一定的规律排列,以形成矩阵的形式。比如,我们可以将一个网格图建立一个二维数组,其中每个元素表示网格中的一个位置。
C++中的二维数组定义方式为:
type arr[num_rows][num_cols];
其中,type表示数组元素的数据类型,num_rows表示数组的行数,num_cols表示数组的列数。
二、使用双重循环遍历二维数组
要实现对二维数组的遍历,我们需要使用两个for循环,一个循环遍历数组的行,一个循环遍历数组的列。
int arr[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
cout << arr[i][j] << " "; //输出每个元素的值
}
cout << endl; //换行
}
上面的代码中,我们定义了一个3行4列的二维整型数组,并通过双重for循环遍历了数组的每个元素并输出了它的值。输出结果为:
1 2 3 4
5 6 7 8
9 10 11 12
三、使用指针遍历二维数组
与一维数组类似,我们也可以使用指针的方式访问和遍历二维数组。对于二维数组,我们需要使用两个指针来遍历数组,一个指针指向当前行,另一个指针指向当前列。
int arr[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
int *p = arr[0]; //指向二维数组的首地址
for(int i = 0; i < 12; i++) { //循环遍历数组中的每个元素
cout << *(p + i) << " "; //输出每个元素的值
if((i + 1) % 4 == 0) { //每行输出一个换行
cout << endl;
}
}
上述代码中,我们定义了一个3行4列的整型二维数组arr,并定义了指向数组首地址的指针p。使用指针方式遍历二维数组时,我们需要将整个二维数组看做一个一维数组,然后使用指针进行遍历即可。上述代码遍历输出的结果与前面的双重循环遍历方式输出的结果相同。
四、使用函数遍历二维数组
为了方便我们对二维数组的遍历以及其他操作,我们可以通过函数来实现,这样可以提高代码的可重用性。
void travel_array(int arr[][4], int rows, int cols) { //定义遍历函数
for(int i = 0; i < rows; i++) {
for(int j = 0; j < cols; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
}
int main() {
int arr[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
travel_array(arr, 3, 4); //调用遍历函数
return 0;
}
上述代码中,我们定义了一个名为travel_array的函数,该函数接受一个二维整型数组、数组的行数和列数作为参数,使用双重for循环遍历了数组并输出了每个元素的值。
在主函数中,我们定义了一个3行4列的二维整型数组arr,并调用了travel_array函数将数组作为参数传递给函数。函数执行后,输出数组中每个元素的值。
总结
本篇文章讲述了C++中遍历二维数组的三种方式:双重循环遍历、指针遍历、以及通过函数实现遍历。通过对以上三个方面的阐述,我们不仅学会了如何遍历一个二维数组,同时也掌握了不同的遍历方式和函数封装的技巧,这将有助于我们更好的开发C++程序。