博客
关于我
c语言之指向二维数组元素的指针变量
阅读量:462 次
发布时间:2019-03-06

本文共 1110 字,大约阅读时间需要 3 分钟。

如何使用指针对二维数组进行遍历?

在编程过程中,经常需要对二维数组进行遍历操作。使用指针来实现这一点既是高效的方法,也是许多开发者熟悉的技巧。以下将详细介绍如何利用指针对二维数组进行遍历。

首先,我们需要明确二维数组在内存中的结构。例如,对于一个二维数组int a[2][3] = { {1,2,3}, {4,5,6} },可以看作是两个一维数组构成的。具体来说,int a[0][3] = {1,2,3} 和 int a[1][3] = {4,5,6}。我们知道,一维数组在内存中是连续的,且数组名a[0]和a[1]分别代表它们的首元素地址。由于二维数组的内存地址也是连续的,a[1]的首元素地址即为a[0]首元素地址加上a[0]中元素的个数。因此,我们可以通过让指针不断+1来访问其中的每一个元素,无需再次考虑行与列的限制。

以下是一个使用指针遍历二维数组的示例代码:

#include 
#include
void printArr(int *p, int m, int n) { for (int i = 0; i < (m * n); i++) { if (i != 0 && i % n == 0) { printf("\n"); } printf("%d ", *(p + i)); } putchar('\n');}int main() { int a[2][3] = { {1,2,3}, {4,5,6} }; int m = sizeof(a) / sizeof(a[0]); int n = sizeof(a[0]) / sizeof(a[0][0]); printf("数组的行:%d 数组的列:%d\n", m, n); printArr(a, m, n); system("pause"); return 0;}

输出结果:

数组的行:2 数组的列:31 2 34 5 6

需要注意以下几点:

  • 使用 int m = sizeof(a) / sizeof(a[0]);int n = sizeof(a[0]) / sizeof(a[0][0]); 来获取数组的行与列。
  • 传入 printArr 函数中的是二维数组首元素的地址,即第一个一维数组的首元素地址,即其名字。
  • 遍历时让指针 p 一直向后移动到二维数组的末尾,可以看作将二维数组展开成一维数组,再计算移动的次数。
  • 当访问到的位置是列的整数倍时,进行换行,方便显示。
  • 转载地址:http://ifsbz.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | 使用PyTorch进行小样本学习的图像分类
    查看>>
    OpenCV与AI深度学习 | 使用YOLO11实现区域内目标跟踪
    查看>>
    OpenCV与AI深度学习 | 使用YOLOv8做目标检测、实例分割和图像分类(包含实例操作代码)
    查看>>
    OpenCV与AI深度学习 | 使用单相机对已知物体进行3D位置估计
    查看>>
    OpenCV与AI深度学习 | 基于GAN的零缺陷样本产品表面缺陷检测
    查看>>
    OpenCV与AI深度学习 | 基于OpenCV和深度学习预测年龄和性别
    查看>>
    OpenCV与AI深度学习 | 基于Python和OpenCV将图像转为ASCII艺术效果
    查看>>
    OpenCV与AI深度学习 | 基于PyTorch实现Faster RCNN目标检测
    查看>>
    OpenCV与AI深度学习 | 基于PyTorch语义分割实现洪水识别(数据集 + 源码)
    查看>>
    OpenCV与AI深度学习 | 基于YOLO11的车体部件检测与分割
    查看>>
    OpenCV与AI深度学习 | 基于YOLOv8的停车对齐检测
    查看>>
    OpenCV与AI深度学习 | 基于机器视觉的磁瓦表面缺陷检测方案
    查看>>
    OpenCV与AI深度学习 | 基于深度学习的轮胎缺陷检测系统
    查看>>
    OpenCV与AI深度学习 | 实战 | OpenCV实现扫描文本矫正应用与实现详解(附源码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 使用YOLOv8 Pose实现瑜伽姿势识别
    查看>>
    OpenCV与AI深度学习 | 实战 | 使用YoloV8实例分割识别猪的姿态(含数据集)
    查看>>
    OpenCV与AI深度学习 | 实战 | 基于YoloV5和Mask RCNN实现汽车表面划痕检测(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 干货 | 深度学习模型训练和部署的基本步骤
    查看>>
    OpenCV与AI深度学习 | 手把手教你用Python和OpenCV搭建一个半自动标注工具(详细步骤 + 源码)
    查看>>
    OpenCV与AI深度学习 | 深度学习检测小目标常用方法
    查看>>