c语言中二维数组地址疑问

2024-10-28 08:22:17
推荐回答(2个)
回答(1):

从二维数组的角度来看,a代表二维数组首元素的
地址,现在的首元素不是一个整型变量,而是由4
个整型元素所组成的一维数组,因此a代表的是首
行的起始地址(即第0行的起始地址,&a[0]),a+1代
表a[1]行的首地址,即&a[1]。因此a[0]代表一维数
组a[0]中0列元素的地址,即&a[0][0]。a[1]的值是
&a[1][0].

0行1列元素的地址可以直接写为&a[0][1],也可以
用指针法表示。a[0]为一维数组名,该一维数组中
序号为1的元素显然可以用a[0]+1来表示,见图6.16。
欲得到a[0][1]的值,用地址法怎么表示呢?既然
a[0]+1是a[0][1]元素的地址,那么,*(a[0]+1) 就是
a[0][1]元素的值。而a[0]又是和*(a+0)无条件等价
的,因此也可以用*(*(a+0)+1)表示a[0][1]元素的值。
依此类推,*(a[i]+j)或*(*(a+i)+j)是a[i][j]的值。

明白了吧。

回答(2):

a是数组名