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
a[0]表示在数组a中的第一个元素。
*(a+0)要理解这个首先要知道*a表示指向数组a的指针的值。
一般都是指向第一个,而指针加0则表示指针指向的偏移量加0.加0之后还是0,也就是没有偏移,即*(a+0)等价于a[0].追问

好像有点明白了,但又不太懂,我再慢慢想想,想通了就采纳你的。。。^_^

噢,想起来了,为啥*(a+0)变成地址了呢?

追答

那个不是地址,*(a+0)这个是一个指针指向地址的值