ImageVerifierCode 换一换
格式:PPTX , 页数:19 ,大小:4.61MB ,
文档编号:4611234      下载积分:15 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-4611234.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(momomo)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(《C语言程序设计案例教程》课件7.3指针与一维数组.pptx)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

《C语言程序设计案例教程》课件7.3指针与一维数组.pptx

1、CONTENTS 目 录提出问题 引入新课自主学习 明确考点案例分析 交流提升仿真演练 体验探索提出问题 引入新课PART 01数组包含若干个元素,各元素在内存中都占用内存单元,都有一个相应的地址,哪如何通过指针变量来引用数组中的元素呢?提出问题 引入新课自主学习 明确考点PART 02定义一个指向数组元素的指针变量,目的是为了通过指针变量对数组元素进行引用和相关的操作。但由于数组分为两个层次,整个数组和组成数组的各个元素,因此在建立指针变量与数组之间的指向关系时,会有两种不同的情况:考点一:指向一维数组的指针变量1)数组的指针是指向整个数组的起始地址,即数组的第一个元素的地址;2)指针指向一

2、维数组元素的地址。2、指向一维数组的指针变量的两种形式:(1)将整个数组的地址赋值给指针变量:=;例如:int a10;/*定义a为包含10个整型数据的数组*/int*p;/*定义p为指向整型变量的指针*/p=&a0;或p=a;/*C语言规定,数组名代表数组的第一个元素的地址*/p=&a0;表示把a0元素的地址或为数组的首地址赋给指针变量p,p指向a数组的第一个元素的地址,使指针变量指向数组的首个元素的地址,并非将数组元素的值赋给p。(2)将数组某元素的地址赋值给指针变量:格式为:=&;表示把数组某个元素的地址赋给指针变量,让指针变量指向数组的某个元素。int a10,*p;p=&a2;考点一

3、:指针的算术运算(1)地址偏移法。地址偏移法是在指针变量的基础上加上偏移地址形成新元素的地址,再通过指针运算符进行引用。考点二:通过指针变量引用数组元素【例1】、通过指针变量p对数组a的每一个元素进行输入和输出的操作。main()int*p,i,a10;p=a;for(i=0;i10;i+)scanf(%d,p+i);for(i=0;i10;i+,p+i)printf(%d,*p);(2)下标法:如果p的初值为&a0,则:(1)p+i和a+i就是ai的地址,或者说它们指向a数组的第i个元素。(2)*(p+i)或*(a+i)就是p+i或a+i所指向的数组元素,即ai。例如,*(p+5)或*(a+

4、5)就是a5。(3)指向数组的指针变量也可以带下标,如pi与*(p+i)等价。考点二:通过指针变量引用数组元素【例2】输出数组中的全部元素。(下标法)main()int a5,i,*p;p=a;for(i=0;i5;i+)pi=i;for(i=0;i5;i+)printf(a%d=%d ,i,ai);(3)指针移动法。指针移动法是通过对指针变量进行运算,改变其指向,使其在数组范围内移动,指向不同的元素来达到引用的目的。运行结果为:a0=0 a1=1 a2=2 a3=3a 4=4【例3】把一个一维数组中的元素按初始顺序的倒序排列。main()int a10=12,3,45,6,20,30,78,

5、50,66,81;int *p,*q,i,t;printf(数组元素的初始顺序:n);for(p=a,i=0;i10;i+)printf(%4d,*(p+);for(p=a,q=a+9,i=0;i5;i+,p+,q-)t=*p;*p=*q;*q=t;printf(n数组元素的最终顺序:n);for(p=a,i=0;i 10;i+)printf(%4d,*(p+);下标法:用 ai 的形式存取数组元素。地址法:用p+i或a+i表示元素的地址,*(a+i)、pi或*(p+i)的形式表示数组元素。指针法:用指针变量p指向数组的首地址,然后通过移动指针存取数组元素。如 p=a,p+。考点三:数组元素的

6、访问形式若有数组及指针定义 int a5,*p=a;下标法:a0 a1 a2 a3a4指针法:*p*(p+1)*(p+2)*(p+3)*(p+4)p0 p1p2p3 p4 *a*(a+1)*(a+2)*(a+3)*(a+4)元素地址 p p+1 p+2p+3p+4 a a+1a+2 a+3a+4数组元素的访问小结:假设 int i,a10,*p=a;表现形式含义&a0 ap 一维数组首地址&a i a+ip+i 一维数组下标为 i 的元素地址a0*a*p 一维数组下标为 0 的元素的值a i*(a+i)*(p+i)一维数组下标为 i 的元素的值考点三:数组元素的访问形式注意:数组名是一个常量地

7、址,不允许重新赋值。指针变量是一个变量地址,可以重新赋值。例如有定义:int a10,*p;p=a;p+合法;但a+不合法(a是数组名,代表数组首地址,是常数地址。)考点四:指针运算符的自增自减运算形式(*p)+表示先取*p的值a0,再使所指的元素的值加1。+(*p)即+*p:表示先使*p的值a0加1,再取*p的值a0。*(p+)即*p+是先取*p的值,后使p加1,指向下一个元素。*(+p)即*+p是先使p加1,指向下一个元素,再取*p的值。考点四:指针运算符的自增自减运算形式 main()int a3,*p=a;a0=10;a1=20;a2=30;printf(“%dn”,*p+);prin

8、tf(“%dn”,*+p);答案为:10 30 例如:对照下列程序,请仔细思考为什么是这样的答案?main()int a3,*p=a;a0=10;a1=20;a2=30;printf(“%dn”,+*p);printf(“%dn”,*+p);答案为:11 20 main()int a3,*p=a;a0=10;a1=20;a2=30;printf(%dn,(*p)+);printf(%dn,a0);printf(%dn,*+p);答案为:10 11 20案例分析 交流提升PART 03【例1】有以下程序运行后的输出结果是()。main()char s=159,*p;p=s;printf(%c,*

9、p+);printf(%c,*p+);A)15B)16C)12D)59【例2】、有以下程序运行后的输出结果是()#include main()int a=1,2,3,4,5,6,7,8,9,10,11,12,*p=a+5,*q=NULL;*q=*(p+5);printf(%d%dn,*p,*q);A)运行后报错 B)6 6C)6 11D)5 10【例3】设有定义语句 int x6=2,4,6,8,5,7,*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是()A)for(i=0;i6;i+)printf(%2d,*(p+);B)for(i=0;i6;i+)printf(%2d

10、,*(p+i);C)for(i=0;i6;i+)printf(%2d,*p+);D)for(i=0;i6;i+)printf(%2d,(*p)+);仿真演练,体验探索PART 041、写出以下程序运行后的输出结果是()main()int a=1,2,3,4,5;int *p=a+3;printf(“%d,%d,%dn”,*p,*(p+1),*p+3);2、写出以下程序运行后的输出结果是()main()int a4=10,20,30,40,*p=a;printf(%dn,*p+);printf(%dn,+*p);printf(%dn,(*p)+);3、以下程序运行后的输出结果是()。main()char a=Language,b=Programe;char*p1,*p2;int k;p1=a;p2=b;for(k=0;k=7;k+)if(*(p1+k)=*(p2+k)printf(%c,*(p1+k);

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|