c语言中二维数组地址疑问
如一个二位数组a[3][4].关于地址,如a是什么?a[0]有是什么?a[0]+1和a+1是什么区别?怎么用地址访问数据等。...
如一个二位数组a[3][4].关于地址,如a是什么?a[0]有是什么?a[0]+1和a+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]的值。
明白了吧。
地址,现在的首元素不是一个整型变量,而是由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]的值。
明白了吧。
更多追问追答
追问
而a[0]又是和*(a+0)无条件等价的,是什么意思
而a[0]又是和*(a+0)无条件等价的,是什么意思
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询