




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C程序设计教案课程名称C程序设计教案总学时80课题指针(一)第 6163学时课型必修教学目标及重点难点目标:1 理解地址和指针的概念2 掌握变量的指针和指向变量的指针变量3 掌握数组与指针重点:1 掌握指针的概念,指针变量的定义、指针变量的赋值和指针运算。2 掌握指针与数组的使用方法。难点:数组与指针教学准备(教具、课件、图片、资料)多媒体教室(投影仪)板书设计采用PowerPoint演示文稿(幻灯片)形式教和学的过程教学内容教师活动学生活动简要回顾对实验和习题情况进行点评;提问归纳课内学习新知识:地址和指针的概念;变量的指针和指向变量的指针变量;指针变量的定义、指针变量的赋值和指针运算;数组与指针。积极参与课堂中实例程序的设计,课后独立完成实验题目,对本讲内容进行归纳和综合运用,同时预习新知识讲解新知识引入实例,激发学生兴趣实例目标利用新知识分析实例的技术要点,引导学生完成实例目标归纳小结总结归纳本讲知识点分析讨论发现问题,通过改善实例目标,启发学生创新思维,并引入下节课内容练习思考结合讲课内容独立完成三个小程序的设计并完成思考题,培养学生综合能力讲课提要内容提要说明简要回顾1. 不带参数的宏定义2. 带参数的宏定义3. “文件包括”处理4. 条件编译演示回顾实验11的知识要点阐述主题1. 地址和指针的概念2. 变量的指针和指向变量的指针变量3. 数组与指针强调重点和难点地址的概念1. 在程序中进行变量声明时,系统会给变量分配内存单元。编译系统根据变量的类型分配一定长度的空间。2. 内存的每个存储单元都有编号(地址)。在程序中用的变量名,编译系统都转换成相应的变量地址。强调系统给变量分配内存单元指针的概念(重点)1. 地址的作用就是指向变量,在C语言中将地址形象化地称为“指针”。2. 将要访问的变量地址(指针)存放在另一个变量中,通过这个指针找到要访问的变量地址,然后进行变量值的读写。这种访问方式称为“间接方式”。指针变量(重点)n 在C语言中,可以定义一种变量用于存放指针(变量的地址)。这种变量称为指针变量n 指针变量的定义格式:1. 格式:类型 *指针变量名;2. 例:int *i_pointer,*j_pointer;float *f1,*f2;char *pointer1;3. 注意:指针变量类型必须和指向的变量类型一致。因为指针运算如pointer1+;的结果与指针类型有关n 指针变量的引用1. 指针变量只能存放地址,不要直接将一个整数或其他非地址类型的数据赋给指针变量。2. 与指针变量有关的运算符:&:取地址运算*:指针运算符,取其指向的内容3. 例:int i,*i_pointer;i_pointer=&i;*i_pointer=1;4. 例:输出指针指向的变量的值void main() int a,b;int *p1,*p2; p1=&a; p2=&b;a=10; b=100; printf(%d,%dn,a,b); printf(%d,%dn,*p1,*p2); *p1=-10;*p2=-100; printf(%d,%dn,a,b);举例说明指针的定义方法与指针的引用方法指针变量(重点)&ap1a5. 指针变量的引用图示如果有int a, *p1; p1=&a;1) *&a含义是什么?2) &*p1含义是什么?3) (*p1)+含义是什么?4) *p1+含义是什么?n 指针变量应用实例1. 例:输入两个整数,按先大后小的顺序输出。void main() int a,b; int *p1,*p2,*p; p1=&a; p2=&b; scanf(%d,%d,p1,p2); printf(a=%d,b=%dn,a,b); if(ab) p=p1;p1=p2;p2=p; printf(max=%d,min=%dn,*p1,*p2);2. 例:设计一个函数,交换两个变量的值3. 例:任意输入三个数,利用前例中的swap函数排序后输出。4. 分析下面程序中的swap函数能否成功交换两个变量的值。void swap(int *p1,int *p2) int *p; p=p1; p1=p2; p2=p;void main() int a,b; int *pa,*pb; void swap(int *,int *); scanf(%d,%d,&a,&b); printf(a=%d,b=%dn,a,b); pa=&a; pb=&b; swap(pa,pb); printf(a=%d,b=%dn,a,b);举例说明指针的定义方法与指针的引用方法数组与指针(重点、难点)n 每个数组元素都在内存中占用存储单元,它们都有相应的地址。也可以用指针指向数组元素。n 定义指向数组元素的指针:int a10;int *p;p=&a0;p=a;n 如果指针变量p已经指向数组的某个元素,同样可以用*p引用该数组元素。n C语言规定,如果指针变量p已经指向数组的某个元素,那么p+1指向同一数组的下一个元素。n 如果指针变量p已经指向数组的第一个元素,那么p+i指向同一数组下标为i的元素。如:int a10,*p=a;那么:*(p+i)与ai等效,即引用同一数组元素。前一种方法为指针引用法,后一种为下标引用法n 程序阅读n 实例:输出数组全部元素1. 下标法2. 地址法:通过数组名找出各数组元素地址3. 指针法n 几点说明1. 对于int a10,*p=a;p是指针变量,指向数组首元素,可以进行p+操作,使指针移向下一个元素。*p进行数组元素引用。a是数组的首地址,相当于指针常量,不能进行a+操作。可以进行a+i计算地址和*(a+i)引用操作。2. 分析:for(p=a;a(p+10);a+) printf(%dn,*a);数组与指针(重点、难点)3. 在使用指针时应注意指针的当前值。4. 分析:void main() int *p,a10,i; p=a; for(i=0;i10;i+) scanf(%d,p+); for(i=0;i10;i+,p+) printf(%d ,*p);/ 当指针不指向数组元素时,/程序并不出错,指向数组外的内存单元5. 注意指针变量的运算。6. 假设int a10,*p=a; 判断以下几个运算的作用p+ /使p指向下一个元素,相当于p=&a1*p+/右结合性,相当于*(p+)*(p+)/先*p指向a0,再p=p+1使p指向下一个元素*(+p)/先p=p+1使p指向下一个元素,再*p 指向a1(*p)+/先*p指向a0,再a0=a0+1;指针不动!用数组名作为函数参数n 实例:回顾,定义一个打印一维数组的函数void prt_array(int *p,int n) int i; for(i=0;in;i+) printf(%dn,*p+);void prt_array(int a ,int n) int i; for(i=0;in;i+) print(%dn,ai);void main() int x5=1,2,3,4,5;prt_array(x,5);/用数组名x作为函数prt_array的一个实参。n 分析:上例中,实参x,是数组名,同时出是数据元素的首地址,所以实际调用函数时传递的是数据元素的首地址。n 实例:回顾,反序一个数组改为用指针void reverse(int *a,int n) int *i,*j,t; for(i=a,j=a+n-1;ij;i+,j-) t=*i;*i=*j;*j=t;void main() int x5=1,2,3,4,5,*p=x;reverse(p,5);以前的方法void reverse(int a,int n) int i,j,t; for(i=0,j=n-1;ij;i+,j-) t=ai;ai=aj;aj=t;void main() int x5=1,2,3,4,5;reverse(x,5);归纳分析n 地址和指针的概念n 指针变量及其运算n 数组的三种遍历方法n 用数组名作为函数的实参。数组名作为实参时,表示数据元素的首地址。布置练习与思考题,扩充学生知识面。实验题目目的:1 通过实验进一步掌握指针的概念,会定义和使用指针变量;2 能正确使用数组的指针和指向数组的指针变量;3 能初步使用字符串的指针和指向字符串的指针变量题目:(请参考教学网站中的实验十二)1 给出的图片中的程序,能够实现输入3个整数,按由小到大的顺序输出。请仔细阅读,输入,运行并观察结果。体会指针变量的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年虚拟现实行业技术创新与市场应用前景分析报告
- 2025年电子行业智能家居设备市场前景研究报告
- 2025年医疗科技行业远程医疗发展前景分析报告
- 2025年工业设计行业工业设计创新与应用前景研究报告
- 南京市2025江苏南京市产品质量监督检验院招聘编外工作人员11人笔试历年参考题库附带答案详解
- 云阳县2025二季度重庆云阳县事业单位考核招聘98人笔试历年参考题库附带答案详解
- 2025河北唐山瑞丰钢铁春季校园招聘招38人笔试参考题库附带答案详解
- 2025广东中山长虹电器有限公司招聘散件工艺工程师等岗位3人笔试参考题库附带答案详解
- 2025年福建福州市鼓楼区城投集团招聘18人笔试参考题库附带答案详解
- 2025年湖南怀化市洪江区企业引才招聘笔试参考题库附带答案详解
- XX旅行社企业介绍模板
- 冲压质量培训
- 2025年辽宁交投集团招聘笔试参考题库含答案解析
- 设备维护与保养手册
- 喷雾干燥塔操作规程模版(3篇)
- 《天疱疮诊断及治疗》课件
- 学校教代会代表换届选举方案
- 现代交换原理第二章
- 2024版工业润滑油销售协议范例版
- 企业级智能数据分析系统开发与服务合同
- 2024数据要素典型案例
评论
0/150
提交评论