正文

C++ 入门 第6章6.3.3 多维数组与指针2008-10-07 23:55:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yzrj/38745.html

分享到:



 

用指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素。
1. 多维数组元素的地址
设有一个二维数组a,它有34列。它的定义为
int a[3][4]={{1,3,5,7},{9,11,13,15},{17,18,21,23}};
a是一个数组名。a数组包含3行,即3个元:a[0],a[1],a[2]。而每一元素又是一个一维数组,它包46.14个元素(4个列元素),例如,a[0]所代表的一维数组又包含4个元素: a[0][0], a[0][1], a[0][2], a[0][3],见图6.14。可以认为二维数组是数组的数,即数组a是由3个一维数组所组成的。

 
 
从二维数组的角度来看,a代表二维数组首元素的地址,现在的首元素不是一个整型变量,而是由4个整型元素所组成的一维数组,因此a代表的是首行的起始地(即第0行的起始地址,&a[0])a+1代表a[1]行的首地址,即&a[1]
a[0],a[1],a[2]既然是一维数组名,而C++又规定了数组名代表数组首元素地址,因此a[0]代表一维数组a[0]0列元素的地址,即&a[0][0]a[1]的值是&a[1][0]a[2]的值是&a[2][0]
 
 
01列元素的地址可以直接写为&a[0][1],也可以用指针法表示。a[0]为一维数组名,该一维数组中序号为1的元素显然可以用a[0]+1来表示,见图6.16
欲得到a[0][1]的值,用地址法怎么表示呢?既然a[0]+1a[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]的值。
 
 

阅读(2104) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册