比如定义一个二维数组 int a[2][3]既然数组名a是数组的首元素地址, 那么为什么*a也是

比如定义一个二维数组 int a[2][3]既然数组名a是数组的首元素地址, 那么为什么*a也是数组的首元素地址呢?

你的理解错了,虽然在你的所说的数组里,a和*a确实都是地址,但是两者是有区别的。
1、首先说a,这里的a将你的二维数组数组看作两个一维数组:a[0],a[1](将本来每一行的所有元素看作一个整体),a指的是第0行的首地址。
2、*a,这里是指将二维数组看作一个整体,*a指的是这个二维数组的第0行第0列的首地址。追问

谢谢!

为什么取地址a[0]和取地址a[0][0]输出的结果一样呢?a[0]没有自己的地址吗?操作系统没有为a[0]分配空间吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-15
二维数组实际上也是一维数组,只不过这个一维数组中的元素比较特殊,每个一维数组元素又是一维数组。

打个比方,a[2][3]可以理解为一个一维数组a[2],只不过a[0]a[1]元素,是一个数组。

*a是数组的首个元素,不是地址追问

谢谢

相似回答