C语言:通过指针引用多维数组一节中,二维数组a[0]和*(a+0)等价,怎么理解?

如题所述

理解这个问题的要点是: 二维数组是 元素为一维数组的一维数组。
于是
a[0]是作为二维数组首元素的一维数组名,所以a[0]表示一维数组(实际是二维数组首行)首元素的地址,即,a[0]是a[0][0]的地址;
数组名a是指针,指向其首元素(a[0]),即其值为&a[0](&a[0]指向a[0][0]),所以*(a)(即*(a+0))指向指向a[0][0];所以,a[0]与*(a+0)等价,都是指向a[0][0]。
不知这样说能不能理解。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-20
都表示第0+1行的首地址追问

怎么会是0+1行的首地址呢?a[0]不是0行首地址吗?而我想问的*(a+0)怎么表示地址了?

追答

我的意思是第0行不存在,所以第一行,也就是你的第0行
数组是一个封装了的二级指针,**才表示值,*表示地址
*(a+n)是第n+1行的首地址,在此基础上,*(a+n)+n就是第n+1行第n+1列元素的地址

追问

是第n行n列元素,不是第n+1行。。。算了,不想了。

本回答被提问者采纳
相似回答