c语言教案第17讲.ppt

c语言教案第17讲.ppt

ID:55827786

大小:375.00 KB

页数:27页

时间:2020-06-09

c语言教案第17讲.ppt_第1页
c语言教案第17讲.ppt_第2页
c语言教案第17讲.ppt_第3页
c语言教案第17讲.ppt_第4页
c语言教案第17讲.ppt_第5页
资源描述:

《c语言教案第17讲.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十七讲指针与数组教学目的与要求:掌握一维数组、二维数组的指针表示法掌握用指针引用字符串教学内容提要:1.指针与二维数组2.指针与字符串教学重点:指针与二维数组、指针与字符串教学难点:指针与二维数组教学进度:P220~P232教学过程:一、指针与二维数组1.二维数组的地址设有一个二维数组a,它有三行四列:inta[3][4];数组名a:代表整个二维数组的首地址,也就是第0行的首地址。a+i:代表第i行的首地址。(见下页图)数组名a代表整个二维数组的首地址:a[0]a[1]a[2]a===1917

2、3111971523上图a数组包含三个元素:a[0],a[1],a[2].而每个元素又是一个一维数组,它包含4个元素(即4个列元素),如:a[0]又包含:a[0][0],a[0][1],a[0][2],a[0][3].一维数组名a[i]:代表第i行的首地址,即第i行中第0列元素的地址(既&a[i][0])。a[i]+j:代表第i行中的第j个元素的地址,即为&a[i][j]。注意地址变化的单位数值在不同的场合的实际字节数是不同的:“a+1”中的“1”实际代表数组中一行元素所占的总字节数;“a[i]

3、+1”中的“1”代表数组中一个元素所占的字节数。a+2a数组a[0]a[1]a[2]aa+1(2000)(2008)(2016)a代表第0行的首地址,a+1代表第1行的首地址,a+2代表第2行的首地址.每行存放4个整型数据(即1个元素占2个字节),因此,这里+1的含义是:+4*2=+8个字节.2000120023200452006720089201011201213201415201617201819202021202223aa+1a+2a[0]+1a[0]+2a[0]+3行地址,元素地址的表示

4、法例用指针表示法输出二维数组的各元素。#includemain(){staticinta[2][3]={{0,1,2,},{3,4,5}};intk,j,*p;for(j=0;j<2;j++)/*方式1*/{for(k=0;k<3;k++)printf("%5d",*(a[j]+k));/*a[j]是j行首地址,a[j]+k是j行k列元素的地址*/putchar(‘’);}putchar(‘’);接上页:for(j=0;j<2;j++)/*方式2*/{for(k=0;k

5、<3;k++)printf("%5d",*(*(a+j)+k));/**(a+j)是j行首地址,*(a+j)+k是j行k列元素的地址*/putchar(‘’);}p=a;/*p指向数组的第一个元素*/for(j=0;j<2;j++)/*方式3*/{for(k=0;k<3;k++)printf("%5d",*(p++));/*输出p所指示的元素*/putchar(‘’);}}输出的结果是:0123450123450123452.指向二维数组的指针变量有两种情况:一是直接指向数组元素的指针变

6、量;二是指向一个含有m个元素的一维数组。这两种不同形式的指针变量,其使用方法不同。指向数组元素的指针变量,即简单指针变量,如:int*p,a[3][4];p=&a[1][2];(2)指向由m个元素组成的一维数组的指针变量定义形式:类型(*指针变量)[元素个数]如:int(*p)[4];注意:(1)int(*p)[4];定义一个指针变量p,p指向包含4个元素的一维数组。(2)p+i与*(p+i)的区别:p+i是指向第i行的指针(第i行的首地址);*(p+i)是指向第i行第1个元素的地址;两者数值相

7、等,但含义不同:p+i的增值将以行长为单位,而*(p+i)增值将以元素长度为单位。即:p+i+1将指向第i行再下一行的首地址,而*(p+i)+1将指向第i行首元素的下一个元素地址。(见下图)设inta[3][4],(*p)[4];p=a;P,aP+1P+2a[0]a[1]a[2]如果p先指向a[0],则p+1不是指向a[0][1],而是指向a[1]例main(){staticinta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int(*p)[4],i,j;p=

8、a;scanf("i=%d,j=%d",&i,&j);printf("a[%d][%d]=%d",i,j,*(*(p+i)+j));}main(){inta[3][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8}};inti;int(*p)[4]=a,*q=a[0];for(i=0;i<3;i++){if(i==0)(*p)[i+i/2]=*q+1;elsep++,++q;}for(i=0;i<3;i++)printf("%d,",a[i][i]);printf("%d,%

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

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

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