C语言基础 | 指针与多维数组

具象到抽象,从具体出发

int array[2][4];
int (*point)[4];
point = array[1];

 这里的array就是一个二维数组,而point是一个指向二维数组的指针,四代表了该数组的第二维长度(即第二维有四个元素)

怎么理解一个多维数组?

可以想象成一个大box,一个大box里面有很多中box,中box里面又有很多小box;array这个是一个大box,里面装了两个中box(array[0]和array[1]),每个中box里面四个小box(如array[1]里面有array[2][0-3})

落实到概念:array是一个地址,这个地址上有两个数组,每个数组里面四个元素;单独看这每一个数组,它的名字就是array[0]和array[1],和前面对应,所以他们也是地址,所有的地址都是这个box里面第一个box的位置。只有一直拆盒子拆到了最后一层不能再拆为止,这些才是真正的元素和值,否则一直是地址地址地址

怎么理解一个指针指向了一个多维数组?

指针是一个变量,有本身自己的地址(所有的地址理解成为一个盒子,一个可以放东西的地方),作为一个变量,指针并没有什么特殊之处,可以做一些运算改变值(毕竟一个盒子还是能装东西滴)而这里的代码就让point这个盒子里面装了array[1]这个盒子的地址(!!!关键理解,这里是地址!!!盒子的地址!!!)这个盒子的位置被point知道了,但是point并不知道它葫芦里卖的是什么药,所以我们要把他拆开

point==&array[1]; //注意没有这种语法,只是为了理解噢,array[1]本身就是地址了
*point==&array[1][0];
**point==array[1][0];

point得到array[1]的地址,*point得到array[1]这个盒子里装的东西,是array[1][0]的地址,最后再用一个*把这个地址的值取出来,就得到了array[1][0]的真正的值

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值