二维数组中a+i和*(a+i)一样含义解析

在二维数组中,遇到a + i 和*(a + i)相等,一般意思上理解 *(a + i)是取a + i中内容,怎么会相等呢?一下是我查找资料和的解析。





重点讲解:

我们知道取一存储单元中的内容的时候,可以用指针去取,

即假如int arr[10];  int *p =arr; 我们可以用*p来取p所指向内存单元中的内容。

可以上面最后一个图片中看到,二维数组被看作一维数组,一维数组中的内容分别是a[0] ,a[1], a[2]。(而且,a[0]代表第一个一维数组的数组名和该一维数组的首地址,a[1]代表第二个一维数组的数组名和该一维数组的数组首地址)而且分别由a,a+1,a+2来对应的指向a[0],a[1],a[2]。所以,可以用*a+1来取a+1所指向内存单元中的内容->a[1]。从而,*(a + 1) 和 a[1] 同等含义,又因为 a+1 和a[1]同等含义,所以

二维数组中 a+i, a[i], *(a + i) , &a[i][0] 同等含义<==> 二维数组第i行元素首地址

,且后续的我们知道 &a[ i ] = a[ i ](原因:实际的二维数组中并没有a[ i ]这样一个元素,是方便我们理解和查找所定义的,它是一种地址算法)。

总之:a+i, a[i], *(a + i) , &a[i][0]  , &a[ i ] 含义一样



  • 11
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值