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 来访问该行的每个元素。

指针算术为数组的访问提供了灵活的方式,尤其是在处理动态分配的数组时非常有用。

全部评论

相关推荐

鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务