ImageVerifierCode 换一换
格式:PPTX , 页数:61 ,大小:452.62KB ,
资源ID:4148481      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4148481.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     索取发票    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(北京科技大学-《C语言》-第8章市公开课一等奖百校联赛获奖课件.pptx)为本站上传会员【精***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

北京科技大学-《C语言》-第8章市公开课一等奖百校联赛获奖课件.pptx

1、8.1.1 指针和指针变量概念指针和指针变量概念指针和指针变量概念指针和指针变量概念a a a ab b b bc c c c5 5直接将整数直接将整数 5 5 存入变量存入变量 a a 3 3直接将整数直接将整数直接将整数直接将整数 3 3 3 3 存入变量存入变量存入变量存入变量 b b b b8 8直接直接将变量将变量 a a、b b 值取出,值取出,相加后存入变量相加后存入变量 c c 利用变量名存取数据方式称利用变量名存取数据方式称利用变量名存取数据方式称利用变量名存取数据方式称为为为为“直接存取直接存取直接存取直接存取”方式。方式。方式。方式。第4页/10/105 C C 语言语言

2、语言语言还提供了对还提供了对还提供了对还提供了对内存单元内存单元内存单元内存单元“间接存取间接存取间接存取间接存取”方式方式方式方式p pa a a ab b b bc c c c53a a a a和和和和b b b b相加结果相加结果相加结果相加结果(*p p p p=a a a a+b b b b)存放到存放到存放到存放到变量变量变量变量p p p p所指向所指向所指向所指向内存单元内存单元内存单元内存单元中去。此时中去。此时中去。此时中去。此时c c c c称为指针变量称为指针变量称为指针变量称为指针变量p p p p目标变量目标变量目标变量目标变量。p pc cp=&c8 ma

3、in(main(main(main()int a=5,b=3,c,int a=5,b=3,c,int a=5,b=3,c,int a=5,b=3,c,*p*p*p*p;p=&c;p=&c;p=&c;p=&c;*p=a+b;*p=a+b;*p=a+b;*p=a+b;8.1 指指针和指和指针变量量8.1.1 8.1.1 指针和指针变量概念指针和指针变量概念指针和指针变量概念指针和指针变量概念 变量地址称为变量指针变量地址称为变量指针变量地址称为变量指针变量地址称为变量指针 存放地址变量称为指针变量存放地址变量称为指针变量存放地址变量称为指针变量存放地址变量称为指针变

4、量第5页8.1 指指针和指和指针变量量l l指指针变量定量定义形式形式 数据数据类型型 *指指针变量名;量名;数据类型:指针变量目标变量类型数据类型:指针变量目标变量类型数据类型:指针变量目标变量类型数据类型:指针变量目标变量类型 一个指针变量分配一个指针变量分配一个指针变量分配一个指针变量分配2Byte2Byte内存空间内存空间内存空间内存空间l l例:例:float x,*p1,*p2;int y,*p3;char name20,*cp;/10/1068.1.2 8.1.2 指针变量定义指针变量定义指针变量定义指针变量定义第6页/10/107 main()main()int a,*p in

5、t a,*p=&a=&a;float x,*q float x,*q=&x=&x;a a a ap p p px x x xq q q q8.1 指指针和指和指针变量量8.1.2 8.1.2 指针变量定义指针变量定义指针变量定义指针变量定义 main()main()main()main()int a,*p;int a,*p;int a,*p;int a,*p;float x,*q;float x,*q;float x,*q;float x,*q;p p p p=&a=&a=&a=&a;q q q q=&x=&x=&

6、amp;x=&x;指针变量定义形式指针变量定义形式指针变量定义形式指针变量定义形式指针变量初始化指针变量初始化指针变量初始化指针变量初始化第7页/10/108 main()main()int a,*p int a,*p=&a=&a;float x,*q float x,*q=&x=&x;*p p=5;=5;printf(printf(a+3=%dn,a+3=%dn,*p*p+3);+3);间接存取运算间接存取运算间接存取运算间接存取运算a a a ap p p px x x xq q q q8.1 指指针和指和指针变量量8.1.3 8.1.3 指针基本运

7、算指针基本运算指针基本运算指针基本运算5第8页/10/109a a a ap p p px x x xq q q q8.1 指指针和指和指针变量量8.1.3 8.1.3 指针基本运算指针基本运算指针基本运算指针基本运算*p=&a;main()main()main()main()int a,*p;int a,*p;int a,*p;int a,*p;float x,*q;float x,*q;float x,*q;float x,*q;p p p p=&a=&a=&a=&a;q q q q=&x=&x=&x=&x;赋值运算赋

8、值运算赋值运算赋值运算“=”“=”两侧类型一致;两侧类型一致;NULLNULL可赋给任何可赋给任何类型指针变量类型指针变量p=;第9页/10/1010方法方法方法方法1 1 1 1:目标变量值不变,改变指针变量:目标变量值不变,改变指针变量:目标变量值不变,改变指针变量:目标变量值不变,改变指针变量指向求解。指向求解。指向求解。指向求解。main(main(main(main()int a,b,int a,b,int a,b,int a,b,*p1p1p1p1,*p2p2p2p2,*p p p p;p1p1p1p1=&a;a;a;a;p2p2p2p2=&b;b;b;b;scan

9、f(scanf(scanf(scanf(%d%d%d%d%d%d%d%d,p1p1p1p1,p2p2p2p2););););if(if(if(if(*p1p1p1p1 *p2p2p2p2)p p p p=p1p1p1p1;p1p1p1p1=p2p2p2p2;p2p2p2p2=p p p p;printf(printf(printf(printf(a=%d,b=%dna=%d,b=%dna=%d,b=%dna=%d,b=%dn,a,b);,a,b);,a,b);,a,b);printf(printf(printf(printf(max=%d,min=%dnmax=%d,min=%dnmax=%d

10、,min=%dnmax=%d,min=%dn,*p1p1p1p1,*p2p2p2p2););););【例【例8.1】输入】输入a、b两个整数,两个整数,使用指针变量按大小次序输出使用指针变量按大小次序输出这两个整数。这两个整数。a ab bp1p1p2p2p p6 68 8a=6,b=8a=6,b=8max=8,min=6max=8,min=68.1.3 指指针基本运算基本运算第10页/10/1011方法方法方法方法2 2 2 2:利用指针变量直接改变目标变量值:利用指针变量直接改变目标变量值:利用指针变量直接改变目标变量值:利用指针变量直接改变目标变量值求解。求解。求解。求解。main(ma

11、in(main(main()int a,b,t,int a,b,t,int a,b,t,int a,b,t,*p1p1p1p1,*p2p2p2p2;p1p1p1p1=&a;a;a;a;p2p2p2p2=&b;b;b;b;scanf(scanf(scanf(scanf(%d%d%d%d%d%d%d%d,p1p1p1p1,p2p2p2p2););););if(if(if(if(*p1p1p1p1 p1、p2=p1。指针与一个整型数据进行比较是没有意指针与一个整型数据进行比较是没有意义义。不一样类型指针变量之间比较是非法不一样类型指针变量之间比较是非法。NULL能够与任何类型指针进行

12、能够与任何类型指针进行=、!=关系运算,用于判断指针是否为空指针关系运算,用于判断指针是否为空指针。8.1.3 指指针基本运算基本运算第14页/10/1015 数组名是该数组指针数组名是该数组指针数组名是该数组指针数组名是该数组指针 a a a a是是是是数组首地址(即数组首地址(即数组首地址(即数组首地址(即a0a0a0a0地址),是一地址),是一地址),是一地址),是一个指针常量。个指针常量。个指针常量。个指针常量。a=&a0,a+1=&a1,a=&a0,a+1=&a1,a=&a0,a+1=&a1,a=&a0,a+1=&a1,

13、a+9=&a9,a+9=&a9,a+9=&a9,a+9=&a9 数组元素下标表示法:数组元素下标表示法:数组元素下标表示法:数组元素下标表示法:a a a a 0 0 0 0 ,a,a,a,a 1 1 1 1 ,a,a,a,a i i i i ,a,a,a,a 9 9 9 9 数组元素指针表示法:数组元素指针表示法:数组元素指针表示法:数组元素指针表示法:*(a+0),(a+0),(a+0),(a+0),*(a+1),(a+1),(a+1),(a+1),*(a+i),(a+i),(a+i),(a+i),*(a+9)(a+9)(a+9)(a+9)8.2 指指针与数

14、与数组8.2.1 8.2.1 指向数组指针指向数组指针指向数组指针指向数组指针1.1.一维数组指针一维数组指针一维数组指针一维数组指针 比如:比如:比如:比如:int a10,*p;int a10,*p;int a10,*p;int a10,*p;a0a0a9a9p p p pa a第15页/10/1016 当当当当p p p p指向指向指向指向a0a0a0a0时,用时,用时,用时,用p p p p表示数组元素表示数组元素表示数组元素表示数组元素 下标法:下标法:下标法:下标法:p0,p1,p0,p1,p0,p1,p0,p1,pi,pi,pi,pi,p9,p9,p9,p9 指针法:指针法:指针

15、法:指针法:*(p+0),(p+0),(p+0),(p+0),*(p+1),(p+1),(p+1),(p+1),*(p+i),(p+i),(p+i),(p+i),*(p+9)(p+9)(p+9)(p+9)a0a0a9a9p p p p1.1.一维数组指针一维数组指针一维数组指针一维数组指针 指向一维数组元素指针变量指向一维数组元素指针变量指向一维数组元素指针变量指向一维数组元素指针变量 数组元素也是一个内存变量,这类指数组元素也是一个内存变量,这类指数组元素也是一个内存变量,这类指数组元素也是一个内存变量,这类指针变量定义和使用与指向变量指针变量相针变量定义和使用与指向变量指针变量相针变量定义

16、和使用与指向变量指针变量相针变量定义和使用与指向变量指针变量相同。比如:同。比如:同。比如:同。比如:int a10,*p;int a10,*p;int a10,*p;int a10,*p;p=a;p=a;p=a;p=a;(或或或或 p=&a0;p=&a0;p=&a0;p=&a0;)a a8.2.1 指向数指向数组指指针第16页/10/1017a a00a a99p p p pa a【例【例【例【例8.38.3】用指】用指】用指】用指针针针针法法法法输输输输出数出数出数出数组组组组元素。元素。元素。元素。main()main()int a10,i,*p;int

17、a10,i,*p;for(i=0;i10;i+)for(i=0;i10;i+)scanf(%d,scanf(%d,a+ia+i););for(i=0;i10;i+)for(i=0;i10;i+)printf(%4d,printf(%4d,*(a+i)*(a+i););printf(n);printf(n);for(for(p=ap=a,i=0;i10;i+),i=0;i10;i+)printf(%4d,printf(%4d,*(p+i)*(p+i););printf(n);printf(n);8.2.1 指向数指向数组指指针1.1.一维数组指针一维数组指针一维数组指针一维数组指针 123456

18、78910 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10第17页/10/1018a a00a a99p p p pa a【例【例【例【例8.38.3】用指】用指】用指】用指针针针针法法法法输输输输出数出数出数出数组组组组元素。元素。元素。元素。main()main()int a10,i,*p;int a10,i,*p;for(for(p=ap=a;pa+10;pa+10;p+p+)scanf(%d,scanf(%d,p p););for(for(p=ap=a;pa+10;pa+10;p+p+)printf(%d,printf(%d,*p*p););prin

19、tf(n);printf(n);1.1.一维数组指针一维数组指针一维数组指针一维数组指针 108.2.1 指向数指向数组指指针第18页/10/1019 数组名数组名数组名数组名是地址,指向数组是地址,指向数组是地址,指向数组是地址,指向数组指针变量指针变量指针变量指针变量存放也是存放也是存放也是存放也是地址。经过指针变量也能够引用数组元素。地址。经过指针变量也能够引用数组元素。地址。经过指针变量也能够引用数组元素。地址。经过指针变量也能够引用数组元素。p p p p=&a0&a0&a0&a0 等效于等效于等效于等效于 p p p p=a=a=a=a。用指针变量引

20、用数组元素,用指针变量引用数组元素,用指针变量引用数组元素,用指针变量引用数组元素,必须关注其当前值。比如:必须关注其当前值。比如:必须关注其当前值。比如:必须关注其当前值。比如:p p p p=p p p p+3+3+3+3*(p-1)*(p-1)*(p-1)*(p-1)、p-1p-1p-1p-1等价于等价于等价于等价于a2a2a2a28.2.1 指向数指向数组指指针 a0a0a9a9p p p pa1a1a2a2a3a3 .1 12 23 34 45 56 67 78 89 91010a a a a数组名数组名数组名数组名和指向数组和指向数组和指向数组和指向数组指针变量指针变量指针变量指针

21、变量区分:区分:区分:区分:指针变量指针变量指针变量指针变量p p p p是是是是变量变量变量变量能够赋值能够赋值能够赋值能够赋值,数组名数组名数组名数组名a a a a是地址是地址是地址是地址常量常量常量常量不能赋值。不能赋值。不能赋值。不能赋值。第19页/10/1020【例例例例8.48.4】输输输输入五个整数,使用指入五个整数,使用指入五个整数,使用指入五个整数,使用指针变针变针变针变量将量将量将量将这这这这五个数五个数五个数五个数 按从小到大排序后按从小到大排序后按从小到大排序后按从小到大排序后输输输输出。出。出。出。main()main()int a5,*pp,*p,*q,t;int

22、 a5,*pp,*p,*q,t;for(p=a;pa+5;p+)for(p=a;pa+5;p+)scanf(%d,p);scanf(%d,p);for(p=a;pa+4;p+)for(p=a;pa+4;p+)pp=p;pp=p;for(q=p+1;qa+5;q+)for(q=p+1;q*q)pp=q;if(*pp*q)pp=q;if(pp!=p)if(pp!=p)t=*p;*p=*pp;*pp=t;t=*p;*p=*pp;*pp=t;for(p=a;pa+5;p+)for(p=a;pa+5;p+)printf(%d,*p);printf(%d,*p);printf(n);printf(n);输

23、入输入a数组数组 for(p=a;pa+4;p+)pp=p for(q=p+1;q*q F pp=q T pp!=p F *pp*p 输出输出a数组数组图图8.9 选择法排序选择法排序N-S图图8.2.1 指向数指向数组指指针p用于定位用于定位pp指向当前最小值指向当前最小值q将次序指将次序指向参加比较向参加比较元素元素最小值不在定位位置最小值不在定位位置第20页/10/10210 0101020201 1111121212 2121222223 313132323a 二二二二维维数数数数组组地址地址地址地址 比如:比如:比如:比如:i i i int nt nt nt a a a a3333

24、4444;二二二二维维数数数数组组名名名名a a a a是数是数是数是数组组首地址首地址首地址首地址。二二二二维维数数数数组组a a a a包含三个行元素:包含三个行元素:包含三个行元素:包含三个行元素:a a a a0000、a a a a1111、a a a a2222 。a a00a a11a a22a三个行元素地址分别是:三个行元素地址分别是:三个行元素地址分别是:三个行元素地址分别是:a a a a、a+1a+1a+1a+1、a+2a+2a+2a+2。而而而而a a a a0000、a a a a1111、a a a a2222也是地址量,是一维数组名,也是地址量,是一维数组名,也是

25、地址量,是一维数组名,也是地址量,是一维数组名,即即即即*(a+0)a+0)a+0)a+0)、*(a+1)(a+1)(a+1)(a+1)、*(a+2)(a+2)(a+2)(a+2)是一维数组首个元素地址。是一维数组首个元素地址。是一维数组首个元素地址。是一维数组首个元素地址。2.2.二维数组指针二维数组指针二维数组指针二维数组指针 a+1a+28.2.1 指向数指向数组指指针第21页/10/1022 二二二二维维数数数数组组元素地址元素地址元素地址元素地址 a a a a0000、a a a a1111、a a a a2222是一是一是一是一维维数数数数组组名,名,名,名,所以所以所以所以a

26、a a aiiii+j+j+j+j是是是是数数数数组组元素地址。元素地址。元素地址。元素地址。数组元素数组元素数组元素数组元素a a a aiiiijjjj地址能够表示为以下形式:地址能够表示为以下形式:地址能够表示为以下形式:地址能够表示为以下形式:&a a a aiiiijjjj、a a a aiiii+j+j+j+j 、*(a a a a+i i i i)+j j j j0 0101020201 1111121212 2121222223 313132323a0数组数组a1数组数组a2数组数组a2a2+1+1 a2 a2+2+2 a2 a2+3+3a0a0+1+1 a0 a0+2

27、+2 a0 a0+3+38.2.1 指向数指向数组指指针2.2.二维数组指针二维数组指针二维数组指针二维数组指针 第22页/10/1023 二二二二维维数数数数组组元素表示法元素表示法元素表示法元素表示法 数数数数组组元素可用以下形式表示:元素可用以下形式表示:元素可用以下形式表示:元素可用以下形式表示:a a a aiiiijjjj、*(a a a aiiii+j+j+j+j)、*(*(a a a a+i i i i)+j j j j)a a a a 是是是是二二二二维数组,依据维数组,依据维数组,依据维数组,依据C C C C地址计算方法,地址计算方法,地址计算方法,地址计算方法,a a

28、a a经过两经过两经过两经过两次次次次 *操作才能访问到数组元素。所以操作才能访问到数组元素。所以操作才能访问到数组元素。所以操作才能访问到数组元素。所以 *a a a a 是是是是 a a a a0000,*a a a a 才才才才是是是是 a a a a00000000。a a a a0000是是是是a a a a00000000地址地址地址地址,*a a a a0000是是是是a a a a00000000。0 0101020201 1111121212 2121222223 313132323a a00a a11a a22a8.2.1 指向数指向数组指指针2.2.二维数组指针二维数组指

29、针二维数组指针二维数组指针 第23页/10/1024 指向指向指向指向二二二二维维数数数数组组元素元素元素元素指指指指针变针变量量量量【例【例【例【例8.58.5】用指向数组元素指针变量输出数组元素。】用指向数组元素指针变量输出数组元素。】用指向数组元素指针变量输出数组元素。】用指向数组元素指针变量输出数组元素。main()main()int a34=0,1,2,3,10,11,12,13,20,21,22,23,i,j,*p;int a34=0,1,2,3,10,11,12,13,20,21,22,23,i,j,*p;for(p=a0,i=0;i 3;i+)for(p=a0,i=0;i 3;

30、i+)for(j=0;j 4;j+)for(j=0;j 4;j+)printf(%4d,printf(%4d,*(p+i*4+j)*(p+i*4+j);/*);/*元素相对位置为元素相对位置为元素相对位置为元素相对位置为i*4+j*/i*4+j*/printf(n);printf(n);这种指针变量定义及使用与指向一维数组元素这种指针变量定义及使用与指向一维数组元素这种指针变量定义及使用与指向一维数组元素这种指针变量定义及使用与指向一维数组元素指针变量是相同,用它存放二维数组元素地址。指针变量是相同,用它存放二维数组元素地址。指针变量是相同,用它存放二维数组元素地址。指针变量是相同,用它存放二

31、维数组元素地址。0 0101020201 1111121212 2121222223 313132323ap p p p8.2.1 指向数指向数组指指针2.2.二维数组指针二维数组指针二维数组指针二维数组指针 第24页/10/1025 指向指向指向指向一一一一维维数数数数组组指指指指针变针变量量量量 指向一指向一指向一指向一维维数数数数组组指指指指针变针变量定量定量定量定义义形式:形式:形式:形式:数据数据数据数据类类型型型型标识标识符符符符 (*变变量名量名量名量名)元素个数元素个数元素个数元素个数 pp *表示其后表示其后表示其后表示其后变量名变量名变量名变量名为指针类型为指针类型为指针类

32、型为指针类型pp元素个数元素个数元素个数元素个数表示目标变量是一维数组,并说明一维数表示目标变量是一维数组,并说明一维数表示目标变量是一维数组,并说明一维数表示目标变量是一维数组,并说明一维数组元素个数。组元素个数。组元素个数。组元素个数。pp因为因为因为因为“*”比比比比“”运算级别低,运算级别低,运算级别低,运算级别低,“*变量名变量名变量名变量名”作为作为作为作为一个说明部分,两边必须加括号。一个说明部分,两边必须加括号。一个说明部分,两边必须加括号。一个说明部分,两边必须加括号。pp“数据类型标识符数据类型标识符数据类型标识符数据类型标识符”是定义一维数组元素类型。是定义一维数组元素类

33、型。是定义一维数组元素类型。是定义一维数组元素类型。8.2.1 指向数指向数组指指针2.2.二维数组指针二维数组指针二维数组指针二维数组指针 第25页/10/1026【例【例【例【例8.68.6】用指向一】用指向一】用指向一】用指向一维维维维数数数数组组组组指指指指针变针变针变针变量量量量输输输输出数出数出数出数组组组组元素。元素。元素。元素。main()main()int a34=0,1,2,3,10,11,12,13,20,21,22,23;int a34=0,1,2,3,10,11,12,13,20,21,22,23;int(*lp)4,i,j;int(*lp)4,i,j;for(lp=

34、a,i=0;i3;i+)for(lp=a,i=0;i3;i+)for(j=0;j4;j+)for(j=0;j4;j+)printf(%4d,printf(%4d,*(*(lp+i)+j)*(*(lp+i)+j););printf(n);printf(n);0 0101020201 1111121212 2121222223 313132323alplp+1lp+2 0 1 2 3 10 11 12 13 20 21 22 238.2.1 指向数指向数组指指针2.2.二维数组指针二维数组指针二维数组指针二维数组指针 第26页/10/1027【例【例【例【例8.68.6】用指向一】用指向一】用指向

35、一】用指向一维维维维数数数数组组组组指指指指针变针变针变针变量量量量输输输输出数出数出数出数组组组组元素。元素。元素。元素。main()main()int a 4=0,1,2,3,10,11,12,13,20,21,22,23;int a 4=0,1,2,3,10,11,12,13,20,21,22,23;int(*lp)4,j;int(*lp)4,j;for(for(lp=alp=a;lpa+3;lpa+3;lp+lp+)for(j=0;j4;j+)for(j=0;j4;j+)printf(%4d,printf(%4d,*(*lp+j)*(*lp+j););printf(n);printf(

36、n);0 0101020201 1111121212 2121222223 313132323alplplplp 0 1 2 3 10 11 12 13 20 21 22 23 8.2.1 指向数指向数组指指针2.2.二维数组指针二维数组指针二维数组指针二维数组指针 第27页/10/1028【例【例【例【例8.78.7】经过初始化使指针指向一个字符串。】经过初始化使指针指向一个字符串。】经过初始化使指针指向一个字符串。】经过初始化使指针指向一个字符串。main()main()char str1=Good morning!;char str1=Good morning!;char*str2=Go

37、od night!;char*str2=Good night!;printf(%sn,str1);printf(%sn,str1);printf(%sn,str2);printf(%sn,str2);8.2 指指针与数与数组 8.2.2 8.2.2 指向字符串指针变量指向字符串指针变量指向字符串指针变量指向字符串指针变量1.1.指向字符串指针变量定义及初始化指向字符串指针变量定义及初始化指向字符串指针变量定义及初始化指向字符串指针变量定义及初始化字符串两种表示方式:字符串两种表示方式:字符数组字符数组字符数组字符数组表示方式,字符串存放在一维数表示方式,字符串存放在一维数组中,用组中,用数组名

38、数组名引用。引用。字符指针变量字符指针变量字符指针变量字符指针变量表示方式,字符指针变量存表示方式,字符指针变量存放字符串首地址,用放字符串首地址,用指针变量名指针变量名引用。引用。Good morning!Good night!第28页/10/1029【例例例例8.88.8】经经经经过过过过赋赋赋赋值值值值运运运运算算算算使使使使字字字字符符符符指指指指针针针针变变变变量量量量指指指指向向向向一一一一个字符串。个字符串。个字符串。个字符串。#includeinclude main()main()char c80,*str;char c80,*str;strcpy(c,How are you?

39、);strcpy(c,How are you?);str=Fine,thanks.;str=Fine,thanks.;printf(%sn%sn,c,str);printf(%sn%sn,c,str);8.2.2 指向字符串指指向字符串指针变量量 2.2.字符串赋值运算字符串赋值运算字符串赋值运算字符串赋值运算 将一个字符串赋给一个字符数组只能使用将一个字符串赋给一个字符数组只能使用 strcpy函数函数 将字符串常量首地址赋给指针变量,可将字符串常量首地址赋给指针变量,可 使用赋值运算符使用赋值运算符“=”How are you?Fine,thanks.第29页/10/1030【例【例【例【

40、例8.98.9】利用指针变量输入输出字符串。】利用指针变量输入输出字符串。】利用指针变量输入输出字符串。】利用指针变量输入输出字符串。#includeinclude main()main()char c80,*str;char c80,*str;str=c;str=c;gets(str);gets(str);puts(puts(strstr););3.3.字符串输入输出字符串输入输出字符串输入输出字符串输入输出 使用字符串输入输出函数使用字符串输入输出函数gets和和puts;在在scanf和和printf函数中使用函数中使用%s格式实现。格式实现。输入字符串时,函数参数:输入字符串时,函数参

41、数:数组名数组名数组名数组名、存有数、存有数组名组名指针变量指针变量指针变量指针变量;输出字符串时,函数参数:输出字符串时,函数参数:数组名数组名数组名数组名、存有字、存有字符串首地址符串首地址指针变量指针变量指针变量指针变量。I love China!I love China!8.2.2 指向字符串指指向字符串指针变量量 第30页/10/1031 【例例例例8.118.11】已知字符串】已知字符串】已知字符串】已知字符串strstr,从中截取一子串。要求从中截取一子串。要求从中截取一子串。要求从中截取一子串。要求该该该该子串是从子串是从子串是从子串是从strstr第第第第mm个字符开始,由个

42、字符开始,由个字符开始,由个字符开始,由n n个字符个字符个字符个字符组组组组成。成。成。成。思思思思绪绪:定定定定义义字符数字符数字符数字符数组组c c c c 存放子串,字符指存放子串,字符指存放子串,字符指存放子串,字符指针变针变量量量量p p p p 用于用于用于用于复制子串,利用循复制子串,利用循复制子串,利用循复制子串,利用循环语环语句从字符串句从字符串句从字符串句从字符串strstrstrstr截取截取截取截取n n n n个字符。个字符。个字符。个字符。考考考考虑虑虑虑到几个特殊情况:到几个特殊情况:到几个特殊情况:到几个特殊情况:mm位置后字符数有可能不足位置后字符数有可能不

43、足位置后字符数有可能不足位置后字符数有可能不足n n个,所以在循个,所以在循个,所以在循个,所以在循环读环读环读环读取字符取字符取字符取字符时时时时,若,若,若,若读读读读到到到到 0 0 停停停停顿顿顿顿截取,利用截取,利用截取,利用截取,利用breakbreak语语语语句跳出循句跳出循句跳出循句跳出循环环环环。输输输输入截取位置入截取位置入截取位置入截取位置mm大于字符串大于字符串大于字符串大于字符串长长长长度,度,度,度,则则则则子串子串子串子串为为为为空。空。空。空。要求要求要求要求输输输输入截取位置和字符个数均大于入截取位置和字符个数均大于入截取位置和字符个数均大于入截取位置和字符个

44、数均大于0 0,不然子串,不然子串,不然子串,不然子串为为为为空。空。空。空。8.2.2 指向字符串指指向字符串指针变量量 第31页/10/1032main()main()char c80,*p,*str=This is a string.;char c80,*p,*str=This is a string.;int i,m,n;int i,m,n;printf(m,n=);printf(m,n=);scanf(%d,%d,&m,&n);scanf(%d,%d,&m,&n);if(mstrlen(str)|n=0|mstrlen(str)|n=0|m=0)pri

45、ntf(NULLn);printf(NULLn);else else for(p=str+m-1,i=0;in;i+)for(p=str+m-1,i=0;i=0&week=0&weekb)swap(&a,&b);if(ab)swap(&a,&b);if(ac)swap(&a,&c);if(ac)swap(&a,&c);if(bc)swap(&b,&c);if(bc)swap(&b,&c);printf(%d,%d,%dn,a,b,c);printf(%d,%d,%dn,a,b,c);

46、7 5 97 5 95 5,7,9,7,97a a5b b9c c&a ax1x1&b bx2x2 主调函数与被调函数之间数据传递方法:主调函数与被调函数之间数据传递方法:主调函数与被调函数之间数据传递方法:主调函数与被调函数之间数据传递方法:实参加形参之间数据传递;实参加形参之间数据传递;实参加形参之间数据传递;实参加形参之间数据传递;被调函数经过被调函数经过被调函数经过被调函数经过returnreturnreturnreturn语句把函数值返回到主调函语句把函数值返回到主调函语句把函数值返回到主调函语句把函数值返回到主调函数;数;数;数;经过全局变量交换数据;经过全局变量交

47、换数据;经过全局变量交换数据;经过全局变量交换数据;利用指针型参数在主调函数和被调函数之间传递利用指针型参数在主调函数和被调函数之间传递利用指针型参数在主调函数和被调函数之间传递利用指针型参数在主调函数和被调函数之间传递数据。数据。数据。数据。7t t79 975 75 形参形参形参形参x1x1x1x1和和和和x2x2x2x2得到得到得到得到mainmainmainmain函数中函数中函数中函数中a a a a和和和和b b b b地址,这么地址,这么地址,这么地址,这么x1x1x1x1和和和和x2x2x2x2目标变量目标变量目标变量目标变量就是就是就是就是mainmainmainmain函数

48、变量函数变量函数变量函数变量a a a a和和和和b b b b。在在在在swapswapswapswap函数中交换函数中交换函数中交换函数中交换 *x1x1x1x1和和和和 *x2x2x2x2内容,就内容,就内容,就内容,就是交换是交换是交换是交换a a a a和和和和b b b b内容,所以当函数调内容,所以当函数调内容,所以当函数调内容,所以当函数调用结束后,尽管用结束后,尽管用结束后,尽管用结束后,尽管x1x1x1x1和和和和x2x2x2x2已经释放,已经释放,已经释放,已经释放,但操作结果仍保留在但操作结果仍保留在但操作结果仍保留在但操作结果仍保留在mainmainmainmain函

49、数变函数变函数变函数变量量量量a a a a和和和和b b b b中,这就是中,这就是中,这就是中,这就是经过指针形参经过指针形参经过指针形参经过指针形参指向域扩展到主调函数方法,到指向域扩展到主调函数方法,到指向域扩展到主调函数方法,到指向域扩展到主调函数方法,到达主调函数与被调函数间交换多达主调函数与被调函数间交换多达主调函数与被调函数间交换多达主调函数与被调函数间交换多个数据目标个数据目标个数据目标个数据目标。第39页/10/10408.3.1 指指针变量作函数参数量作函数参数2.2.数组指针作函数参数数组指针作函数参数数组指针作函数参数数组指针作函数参数 一一一一维维维维数数数数组组组组指指指指针针针针作函数参数作函数参数作函数参数作函数参数 比如被调函数比如被调函数比如被调函数比如被调函数

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服