栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

计算机程序设计c++ 8-2:二维数组与指针

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

计算机程序设计c++ 8-2:二维数组与指针

二维数组的指针 二维数组地址是映射为一维数组存储

设二维数组:int a[3][4],i,j;
二维数组a中i行j列元素的地址二维数组在内存中映射为一个一维数组,因此可以通过指向元素的指针快速访问二维数组中的每个元素。

如:利用指向数组元素类型的指针变量p,寻找a数组中元素的最大值
假设:

int *p,max=a[0][0]; //max为最大值
for(p=&a[0][0]; p<&a[0][0]+12; p++)  // 地址被映射为一个一维数组,数组长度为3*4=12
{
	if(*p>max)
		max=*p;
}
cout << "max=" << max << endl;
二维数组的行地址

int a[3][4];
由3行元素组成,即a - a[0],a[1],a[2]
而每行又由4个类型相同的元素组成,分别对应一个一维数组。

a[0]-a[0][0],a[0][1],a[0][2],a[0][3]
a[1]- a[1][0],a[1][1],a[1][2],a[1][3]
a[2]- a[2][0],a[2][1],a[2][2],a[2][3]

其中:
a为行元素数组的名字,即a代表&a[0],即0行的地址

  • a+1代表&a[1],即1行的地址
  • a+2代表&a[2],即2行的地址
二维数组元素的指针法表示

由于 a[0]是由a[0][0],a[0][1],a[0][2]和a[0][3]四个元素构成的一维数组;
因此,a[0]代表&a[0][0],即0行的首元素的地址
这样 a[0]+1代表首元素的下一个元素的地址即&a[0][1],
同理,a[1]代表&a[1][0],即1行的首元素的地址, 而a[0]+j代表&a[0][j]
a[i]代表&a[i][0],即i行的首元素的地址,而a[i]+j代表&a[i][j]

由此得到:*(a[i]+j) 等价于a[i][j]
又由于 a[i]等价于*(a+i),因此,*(a[i]+j) )也等价于*(*(a+i)+j)
即:*(*(a+i)+j)与a[i][j]等价

将 *(*(a+i)+j)称为二维数组元素a[i][j]的指针法表示。
其中,a为首行地址,a+i为i行的行地址,而*(a+i)为a的i行0列元素的地址, 而 *(a+i)+j为a的i行j列元素的地址。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/509772.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号