指针与一维数组、二维数组的等价互换关系

本文探讨了二维数组与指针之间的等价互换关系。详细阐述了如何通过指针操作从二维数组的行指针转换为列指针,以及从列指针转换回行指针。同时,文章将二维数组划分为三层结构,并解释了如何通过指针运算在这些层级间转换。此外,还总结了一维数组和二维数组中索引使用的通用公式。
摘要由CSDN通过智能技术生成

在这里插入图片描述
在这里插入图片描述
1、 对于任意二维数组 int a[ROW][COLUMN] 来说, a+i 表示行指针,而 a[i] 标识列指针(其中 i 表示某个整形值) ,行指针转化为列指针是通过在行指针前面加“ * ”运算符做到,而列指针转化为行指针是通过“ & ”来做到。如 Fig.1 所示:在这里插入图片描述
2、 在二维数组 int a[ROW][COLUMN] 中,可以认为划分为三层,最高层为行指针,中间层为列指针,而最底层为元素。由高层到底层可以通过 ”*”运算符来做到,而由底层到高层可以通过 ”& ”运算符来做到。如 Fig.2 所示:在这里插入图片描述
3、 对于二维数组 int a[ROW][COLUMN] 来说,行指针的本质就是一个指向包含 COLUMN个元素一维数组的指针 也就是 int (*p)[COLUMN] ,而列指针的本质就是一个指向元素的指针,也就是 int *p;

4、 对于一维数组来说,总结出的一个通用公式是 a[x]= * (a+x) = * (x+a)=x[a] ,这也就是我们既可以用 a[3]也可以用 3[a]的原因;而对于二维数组来说,总结出的通用公式是a[i][j]=* ( *(a+i) +j )

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值