C程序设计教案_第1页
C程序设计教案_第2页
C程序设计教案_第3页
C程序设计教案_第4页
C程序设计教案_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C程序设计教案课程名称C程序设计教案总学时80课题指针(二)第 6668学时课型必修教学目标及重点难点目标:1 了解多维数组与指针2 掌握字符串与指针3 了解指向函数的指针4 了解返回指针值的函数5 了解指针数组和指向指针的指针重点:1 掌握字符串与指针难点:字符串与指针教学准备(教具、课件、图片、资料)多媒体教室(投影仪)板书设计采用PowerPoint演示文稿(幻灯片)形式教和学的过程教学内容教师活动学生活动简要回顾对实验和习题情况进行点评;提问归纳课内学习新知识:多维数组与指针;掌握字符串与指针;了解指向函数的指针;了解返回指针值的函数。积极参与课堂中实例程序的设计,课后独立完成实验题目

2、,对本讲内容进行归纳和综合运用,同时预习新知识。讲解新知识引入实例,激发学生兴趣实例目标利用新知识分析实例的技术要点,引导学生完成实例目标归纳小结总结归纳本讲知识点分析讨论发现问题,通过改善实例目标,启发学生创新思维,并引入下节课内容练习思考结合讲课内容独立完成二个小程序的设计并完成思考题,培养学生综合能力讲课提要内容提要说明简要回顾1. 地址和指针的概念2. 变量的指针和指向变量的指针变量3. 数组与指针处理演示回顾实验12的知识要点阐述主题1. 了解多维数组与指针2. 掌握字符串与指针3. 了解指向函数的指针4. 了解返回指针值的函数5. 了解指针数组和指向指针的指针强调重点和难点多维数组

3、与指针n 多维数组的地址n 多维数组与指针间的关系按教学大纲,本内容只要求了解。字符串与指针(重点、难点)n 在C中,字符串用字符数组处理,也可以用指针处理。n 例:输出一串字符"I am a stuent."/用指针处理时程序# include <stdio.h># include <string.h>void main() char str="I am a stuent." char*p=str; printf("%sn",p); puts(p); for(;*p!='0'p+) print

4、f("%c",*p); putchar('n');/用数组处理时程序# include <stdio.h># include <string.h>void main() char str="I am a stuent." int i,n; n=strlen(str); printf("%sn",str); puts(str); for(i=0;i<n;i+) printf("%c",stri); putchar('n');/用指针处理时可以更简洁# in

5、clude <stdio.h># include <string.h>void main() char*p="I am a stuent."printf("%sn",p); puts(p); for(;*p!='0'p+) printf("%c",*p); putchar('n');n 例:复制字符串void main() char a="I am a stuent.",b100,*p=a,*q=b;for(;*p!='0'p+,q+) *q=

6、*p;*q='0'printf("a is:%sn",a);printf("b is:%sn",b);n 字符串指针作函数参数例:设计字符串复制函数,然后调用函数进行字符串复制。void stringcopy(char *to,char *from) for(;*from!='0'from+,to+) *to=*from; *to='0'void main()char a="I am a stuent.",b="You are a teacher",*p=a,*q=b

7、;stringcopy(q,p);stringcopy(a,b);n 字符数组和字符指针的区别1. 字符数组由若干个数组元素组成,指针变量仅存放地址(第一个字符的地址)2. 赋值方式:字符数组必须逐个数组元素赋值,指针变量赋值的是 首字符地址。char str40; str ="China" /× 可以初始化char *p; p= "China" /3. 定义了字符数组就分配了具体的内存单元,有确定地址;字符指针变量仅是可以指向一个字符变量的地址,最好先确定它的地址char str40;scanf(“%s”,str); /可以char *p;s

8、canf(“%s”,p); /不建议,可能造成内存冲突,改为:char str40,*p=str;scanf(“%s”,p); 4. 指针变量的值可以改变。char *p="I am a stuent."p=p+7;puts(p);5. 数组名代表地址,是固定常量,不能改变。char str ="I am a stuent. "str=str+7; /错误puts(str);6. 可以用指针变量或字符数组指向一个格式字符串。char *p="a=%d,b=%fn",str="a=%d,b=%fn"int a=1;f

9、loat b=2;printf(p,a,b);printf(str,a,b);7. 指针变量可以设计为可变格式字符串,字符数组不可以。p="%d,%fn" /str="%d,%fn" /×按教学大纲,“字符串指针作函数参数”只要求了解。指向函数的指针n 一个函数在编译时被分配给一个入口地址。这个入口地址就是函数的指针。n 可以用指针变量指向函数,然后通过指针调用函数。n 定义形式:数据类型 (*指针变量名) ( );n 指针变量赋值:指针变量名=函数名;n 函数调用:(*指针变量名) (实参表列 )n 指向函数的指针实例void main()

10、int x,y,m,(*p)(); /p是函数指针 int max(int,int); scanf("%d,%d",&x,&y); p=max; /将max函数地址赋给p m=(*p)(x,y); /通过p调用max函数 printf("max=%dn",m);int max(int a,int b) return(a>b?a:b);按教学大纲,本节内容不用要求。返回指针值的函数n 一个函数的返回值可以是整型、实型、字符型等,也可以是指针类型。n 返回指针类型函数定义形式:类型名 * 函数名(参数表列)n 实例:查找最大数int *

11、max(int *p,int n) int *t,i; t=p; for(i=0;i<n;i+,p+) if(*t<*p) t=p; return t;按教学大纲,本节内容不用要求。指针数组和指向指针的指针n 一个数组,其元素均为指针类型数据,称为指针数组。n 定义形式:类型名 *数组名数组长度;n 多个字符串需要多个字符数组或二维字符数组处理,若用指针数组处理则特别方便灵活。char *p4="Beiging","Hagzhou","Shanghai","Chengdu"int i;for(i=0;i

12、<4;i+) puts(pi);n 指向指针数据的指针变量,称为指向指针的指针。n 定义形式:类型名 *指针变量名;n 例:int a5=10,20,30,40,50;int *p5=&a0,&a1,&a2,&a3,&a4;int *q=p,i;for(i=0;i<5;i+,q+) printf("%dn",*q); /二级间址n 例:char *p4="Beiging","Hagzhou","Shanghai","Chengdu"char *q=p;for(;q<p+4;q+) puts(*q);归纳分析n 通过指针访问多维数组的元素n 字符串与指针的关系n 了解指向函数的指针、返回指针值的函数、指针数组和指向指针的指针布置练习与思考题,扩充学生知识面。实验题目目的:1 能正确使用字符串的指针和指向字符串的指针变量;2 了解用函数指针变量调用函数及用指向函数的指针作函数参数的方法3 了解指向指针的指针的概念及其使用方法。题目:(请参考教学网站中的实验十三)1 仿照指针实验一中基础题一的例子,将程序改为:输入

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论