第21讲 二维数组与指针.ppt

第21讲 二维数组与指针.ppt

ID:48816455

大小:266.50 KB

页数:26页

时间:2020-01-28

第21讲 二维数组与指针.ppt_第1页
第21讲 二维数组与指针.ppt_第2页
第21讲 二维数组与指针.ppt_第3页
第21讲 二维数组与指针.ppt_第4页
第21讲 二维数组与指针.ppt_第5页
资源描述:

《第21讲 二维数组与指针.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第21讲二维数组与指针指针与二维数组#defineM2#defineN3…intb[M][N];两种观点:看成一个一维数组看成数组的数组2将二维数组看成一个一维数组intb[M][N];二维数组b相当于一个有6个元素的一维数组若有int*p=&b[0][0];或p=b[0];(总之是列地址)b[i][j]相对于数组起始地址的偏移量为i*N+j则p[i*N+j]或*(p+i*N+j)表示每一个数组元素。b[0][0]b[0][1]b[0][2]b[1][0]b[1][1]b[1][2]pP[0]P[2]P[3]P[4]P[5]P[1]3填空题:求二维数组元素的和#inclu

2、devoidmain(){inta[3][4]={1,3,5,7,9,11,13,17,19,21,23};inti,j,sum=0,*p=;for(i=0;i<3;i++)for(j=0;j<4;j++){sum+=p[];}printf(“sum=%4d",sum);}a[0]或&a[0][0]i*4+ja[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]……P[0]P[2]P[3]P[4]P[5]……P[1]p4#includevoidmain(){inta[3][4]={1,3,5,7,9,11,

3、13,17,19,21,23};int*p=;for(;;p++){if(()%4==0)printf("");printf("%4d",);}}填空:输出二维数组元素的值a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]……p135791113输出结果:1357911131517192123a[0]或&a[0][0]p

4、沿水平方向至第j列取出数据6将二维数组看成数组的数组行地址b+0b+1b[1]b[0]b一维数组b[0]b[1][0]b[1][1]b[1][2]b[0][0]b[0][1]b[0][2]一维数组b[1]将二维数组的每一行看成一维数组*(b+1)*(b+0)列地址b[0]+0b[0]+1b[0]+2b[1]+0b[1]+1b[1]+2列地址*(b[0]+0)*(b[0]+1)*(b[0]+2)*(b[1]+0)*(b[1]+1)*(b[1]+2)再将二维数组b看成由b[0],b[1]两个元素组成的一维数组,注意:b[0],b[1]存放的是每行的首地址7指针与二维数组行地

5、址b+0b+1一维数组bbb[1]*(b+1)b[0]*(b+0)列地址b[0]+0b[0]+1b[0]+2*(b+0)+0*(b+0)+1*(b+0)+2一维数组b[0]b[1]+0b[1]+1b[1]+2*(b+1)+0*(b+1)+1*(b+1)+2列地址b[1][0]b[1][1]b[1][2]*(*(b+1)+0)*(*(b+1)+1)*(*(b+1)+2)b[0][0]b[0][1]b[0][2]*(*(b+0)+0)*(*(b+0)+1)*(*(b+0)+2)一维数组b[1]8指针与二维数组b代表二维数组的首地址,指向第0行的首地址(行地址)b+i指向第i行

6、的首地址(行地址)*(b+i)或b[i]代表第i行第0列的地址(列地址)*(b+i)+j或b[i]+j代表第i行第j列的地址(列地址)*(*(b+i)+j)或b[i][j]代表第i行第j列的元素(数组元素)9用数组名引用二维数组元素元素b[i][j]的几种等价的引用方式b[i][j]*(b[i]+j)*(*(b+i)+j)(*(b+i))[j]如何用指针变量引用二维数组元素?10二维数组与指针用指针指向二维数组,有两种指针:列指针,这种指针指向二维数组的每一个元素,它每加1,指向二维数组的下一个数组元素。行指针,这种指针指向二维数组的行,它每加1,指向二维数组的下一行。上

7、边两种指针分别对应着对二维数组的两种看法。11二维数组的行指针行指针指向二维数组的行例:int(*p)[3];含义:定义一个指针变量p,用于指向一行(每行有3个元素)定义格式:类型(*行指针名)[常量N];要用p指向数组b,如何初始化?p=b(或p=&b[0]);/*用行地址初始化*/p++的含义是?指向b[1],即指向下一行的开始位置。如何用P引用b中每一个数据元素?p[i][j]*(p[i]+j)*(*(p+i)+j)(*(p+i))[j]12行地址与列地址的区别行地址列地址aa[0]int(*p1)[N];P1=a;in

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。