关于二维数组a中,a[1] 与 &a[1]相等的一个疑问?(从来没弄懂)

对二维数组a[][]来说,a[1] 与 &a[1]相等。我来分析一下我的误解:
首先,a[m] 里面的内容是一个一维数组的首地址。
而 &a[m] 是 a[m] 的地址,它们相等。
说明 a[m] 的内容其实就是他本身的地址编号 (把 a[m] 看成一个变量)

对于一个内容就是地址的变量m,&m 与 m 相等 毋庸置疑。

然而 &a[m][0] 也等于 a[m]
说明 a[m][0] 的地址 就是 a[m] 的内容 , 也就是 a[m] 的地址;
那么,a[m][0] 与 a[m] 就是在同一地址上的不同变量名了(我知道变量这种说法不太准确)

但是,同一个地址,a[m][0] 与 a[m] 的内容确是截然不同,为什么。

我希望那位朋友能耐心看完我的想法,帮我走出误区,感激不尽!

5个回答

 对于二维数组a[m][n]
a 表示 int (*)[m]
&a 表示 int (*)[m][n]
a[m] 表示 int *
&a[m] 表示 int (*)[m]
a[m][0] 表示 int
&a[m][0] 表示 int *
shaqianmo
shaqianmo 我想知道我说的哪里有问题
接近 6 年之前 回复

作为特例

 a = &a = a[0] = &a[0] = &a[0][0]
a[m] = &a[m] = &a[m][0]

不管你怎么理解的,以我说的为准。

你要习惯从C语言的语法约定去推导规则,而不是根据某个程序的值相等不相等去瞎凑。

你的误解在于 你虽然知道 数组名是首元素的地址,但你忽略了 它是一个指针常量,假设一位数组名 a , a=&a; 同理二维数组也是。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐