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

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

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

 

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

 

 

上面两张截图就是我测试二维数组的代码与结果,接下来再来看看一维数组的:

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

 

 C++:指针与二维数组,*(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类型:

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

 

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

 

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

 

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

 

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

 

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

 

 

 

 

 

 

————————————————
版权声明:本文为CSDN博主「我喜欢小黄花」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/orange_monkey/article/details/104349441

原文链接: https://www.cnblogs.com/bpgg/p/12631621.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

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

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/339868

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午12:19
下一篇 2023年3月2日 上午12:19

相关推荐