指针与二维数组,*(a+1)、a+1、&a+1等等到底怎么分清楚!!!

废话不多说,直接上图!!

在这里插入图片描述

在这里插入图片描述
上面两张截图就是我测试二维数组的代码与结果,接下来再来看看一维数组的:

在这里插入图片描述

在这里插入图片描述

两组数据的对比可以看出二维数组明显难理解一些,那咱们应该如何理解二维数组?

二维数组可以看成是元素为 一维数组 的 一维数组。比如 a[2][3],可以看成是具有两个元素的一维数组(这两个元素是 a[0], b[1]),每个元素又是一个具有三个int型数据的一维数组。

接下来说几个注意事项:

1.首先需要注意的是数组名也是数组的首地址,是地址!!!
例如:a[1][2]、b[1]中的a、b。

2.另外,认真看完图后,有些小伙伴也许就会有疑问,我是不是漏了&(a+1)呢?
其实不是我漏了,&(a+1)是非法的语句,无法编译,因为a+1的结果存放在寄存器中,无法取址,不当然,相信也可以自己动手试试,看看自己的编译器会不会报错。

3.如果你想表达的是取值操作,那应该使用取值操作符*,表达式变为a+1和(a+1),这两个表达式是有区别的:
*a+1表示是先取出a[0]的值,然后对该值加1。
*(a+1)表示的是数组指针先向下跳一位,然后取出其指向的a[1]的值。

4.*(a+0)+i=a[0]+i,是a[0][i]的地址。

补充char类型:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值