c语言用二维数组名引用元素的指针表示方法:

定义一个二维数组 int a[3][4]; 因为二维数组名的值为&a[0][0],即a=&a[0][0];
又因为有*(a+0)=a[0]=&a[0][0]; 那么就有a=*(a+0) 这不是矛盾了吗?
求详解,谢谢!

a不等价于&a[0][0]。
a和&a[0][0]的值是相同的,但类型不同。a是二维数组的地址,而&a[0][0]是int变量的地址,含量不同。
正确的说法是:a==&a[0],而a[0]==&a[0][0]。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-03
又因为有*(a+0)=a[0]=&a[0][0];我感觉这句理解错了。*(a+0)=a[0][0],而不是&a[0][0]。因为*(a+0)取得是数组元素,而&a[0][0]的值是第一个数组元素的地址。追问

**(a 0)才等于a[0][0]; ……

追答

sorry ,

burkwen说得对,我错了,我和一位数组搞混了

追问

嘿嘿

相似回答