C++指针幻灯片.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.5.1 二维数组的地址 a[0]为一维数组名,其数组有四个int型的元素: a[0][0],a[0][1],a[0][2],a[0][3] 同样,它代表一维数组的首地址,所以,a[0]为a[0][0]。 a[0]为a[0][0] a[0][0]=*(a[0]+0) a[0] = *(b+0) a[0]+1为a[0][1] a[0][1]=*(a[0]+1) a[1] = *(b+1) a[0]+2为a[0][2] a[0][2]=*(a[0]+2) a[2] = *(b+2) a[0]+3为a[0][3] a[0][3]=*(a[0]+3) a[3] = *(b+3) a[1]+2为a[1][2] a[1][2]=*(a[1]+2) 行 列 7.5.1 二维数组的地址 a为二维数组名,a+1为a[1]的地址,也就是数组第一行的地址,所以a为行指针。 a[1]为一维数组名,a[1]+1为a[1][1]的地址,也就是数组第一行第一列的地址,所以a[1]为列指针。 a[2][3] a[2][2] a[2][1] a[2][0] a[1][3] a[1][2] a[1][1] a[1][0] a[0][3] a[0][2] a[0][1] a[0][0] 200CH 2008H 2004H 2000H a a[2] a[1] a[0] 2000H 2010H 2020H 可以看到:a, a+0 , *(a+0), a[0], a[0][0]表示的都是2000H,即二维数组的首地址。 实际上,a[0], a[1], a[2]并不是实际的元素,它们在内存并不占具体的存储单元,只是为了我们表示方便起见而设计出的一种表示方式。 a为行指针,加1移动一行。 *a或a[0]为列指针,加1移动一列。 a[1]=*(a+1) *(a+1)+2=a[1][2] *(*(a+1)+2)=a[1][2] **(a+1)=*(a[1])=*(*(a+1)+0)=a[1][0] *(a+1)[1]=*(*(a+1)+1)=a[1][1] *((a+1)[1])=**(a+1+1)=**(a+2)=a[2][0] 注意二维数组的各种表示法,a为常量。 表示形式 含义 a 二维数组名,表示数组的起始地址,数组第0行的地址 a+0 第0行的起始地址 a[0] 第0行第0列元素的起始地址 *a, *(a+0) 第0行第0列元素的地址 **a, **(a+0), *a[0], *(*(a+0)+0) 表示元素a[0][0] a+i, a[i] 第i行的起始地址 a+i+j, a[i]+j 第i+j行的起始地址 a[i], *(a+i) 第i行第0列元素的起始地址 *(a+i)+j, a[i]+j, a[i][j], * a[i]+j 第i行第j列元素的地址 *(*(a+i)+j), *(a[i]+j), *(a[i][j]), *(* a[i]+j), a[i][j] 第i行第j列元素的值 数组地址和元素的表示法 7.5.2 用指针变量引用二维数组中的元素 1. 用指针变量引用二维数组中的元素 定义一个整型指针变量:int *p=a[0][0]; 或:int *p=a[0]; 则数组中任一元素a[i][j]的地址a[i][j]用p表示为:p+i*4+j,元素值a[i][j]为:*(p+i*4+j)。 7.5.2 用指针变量引用二维数组中的元素 如果有以下定义: int a[M][N], *p=a[0]; 则a[i][j]的地址a[i][j]为: p+i*N+j, 而a[i][j]为:*(p+i*N+j)。 例7.12 用指针变量输出二维数组中的元素。 #includeiostream.h void main() { int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},k=0; int *p; for( p=a[0];pa[0]+12; ) //为指针变量赋值 { cout*p++\t; //输出指针变量所指向的数据后指针变量自加1 k++; if(k%4==0) coutendl; } } 程序执行后输出为: 1 2 3 4 5 6 7 8 9 10 11 12 例7.5 写出以下程序的运行结果。 void main( ) { int a[4]={3,5,7,9}; int *p=a; cout*p++endl; //A cout(*p)++endl; //B cout++

文档评论(0)

yuzongxu123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档