C/C++日志13
通过数组指针遍历二维数组
对于 二维数组,我们需要处理指向每一行的指针。以下是如何通过数组指针遍历二维数组的示例:
#include <iostream>
using namespace std;
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}}; // 定义一个 2x3 的二维数组
int (*ptr)[3] = arr; // 定义一个指向包含 3 个整数的数组的指针,指向 arr 的首行
// 通过数组指针遍历二维数组
for (int i = 0; i < 2; ++i)
{ // 遍历二维数组的行
for (int j = 0; j < 3; ++j)
{ // 遍历二维数组的列
cout << *(*(ptr + i) + j) << " "; // 通过指针算术访问每个元素
}
cout << endl;
}
return 0;
}
解释:
1.int (*ptr)[3] = arr;: ptr 是一个指针,指向一个包含 3 个整数的数组。初始化为指向 arr 的首行。
2.*(*(ptr + i) + j):
ptr + i 移动到第 i 行。
*(ptr + i) 获取第 i 行的指针(即一个包含 3 个整数的数组)。
*(ptr + i) + j 将偏移量 j 加到行指针上,访问该行的第 j 个元素。
*(*(ptr + i) + j) 解引用该位置,得到元素的值。
输出:
1 2 3
4 5 6
总结:
通过数组指针遍历一维数组,可以通过指针算术操作访问每个元素。
对于二维数组,指针的使用稍微复杂一些,需要首先通过 ptr + i 访问某一行,再通过 *(ptr + i) + j 来访问该行的每个元素。
指针算术为数组的访问提供了灵活的方式,尤其是在处理动态分配的数组时非常有用。
查看24道真题和解析
文远知行公司福利 557人发布