内容正文:
课题
字符串纠错
课时
2课时(90 min)
教学目标
知识目标:
(1)掌握指针在数组中的使用方法
(2)掌握指针在字符串中的使用方法
能力目标:
能在数组和字符串中灵活运用指针
素质目标:
通过学习指针在数组和字符串中的使用方法,培养学生学习知识要融会贯通
教学重难点
教学重点:指针与一维数组,指针与字符串,指针数组
教学难点:通过指针引用字符串
教学方法
问答法、讨论法、讲授法
教学用具
电脑、投影仪、多媒体课件、教材
教学过程
主要教学内容及步骤
课前任务
【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过文旌课堂APP或其他学习软件,完成课前任务
请同学们回顾之前字符相关知识,总结将大写字母转换成小写字母的方法。
【学生】完成课前任务
考勤
【教师】使用文旌课堂APP进行签到
【学生】班干部报请假人员及原因
问题导入
【教师】请同学们扫码观看“字符串的表示方式”视频(详见教材),讨论并回答以下问题:
字符串的表示方式有哪几种?字符数组与字符指针有何区别?
【学生】思考、举手回答
传授新知
【教师】讲解指针与一维数组,指针与字符串,指针数组
一、指针与一维数组
✈【教师】多媒体观看“指针变量与一维数组”视频(详见教材),让学生了解如何定义指向数组的指针变量,数组中的指针运算,通过指针引用数组元素
1.定义指向数组的指针变量
指针变量也可以指向数组中的元素。例如:
int a[5]={1,2,3,4,5},*p;
p=&a[0];
此处定义了一个一维数组a和一个指针变量p,使指针变量p指向a的第1个元素。
由于一维数组的数组名是一个地址常量,即a等价于&a[0]。因此,也可以通过数组名将数组的首地址赋给指针变量,即“p=a;”。
2.数组中的指针运算
当指针指向数组元素时,可以对指针进行以下运算。
(1)加减一个整数。对于指向数组的指针变量,可以加上或减去一个整数n。例如,p是指向数组a[i]的指针变量,则p+n、p−n、p++、++p、p−−、−−p都是合法的。指针变量加上或减去一个整数n的意义是将指针指向的当前位置向前或向后移动n个位置。
(2)两指针变量相减。若两个指针变量指向同一数组,则两个指针变量相减所得之差就是两个指针所指数组元素之间相差的元素个数。例如:
int a[5]={1,2,3,4,5},b,*p,*q;
p=&a[0];
q=&a[4];
b=q-p;
此例中,b的结果为4,即两个指针变量指向的元素下标之差。
✈提示
(1)只有指向同一数组的两个指针变量之间才能进行减法运算,否则毫无意义。
(2)两个指针变量不能进行加法运算。
3.通过指针引用数组元素
通过指针引用数组元素的一般形式如下。
*(a+i)或*(p+i)
其中,a是数组名,p是指向数组元素的指针变量,且p指向数组a的第1个元素。指向数组的指针变量也可以带下标,如p[i]与*(p+i)是等价的。
✈高手点拨
*(p+i)和a[i]相等的前提条件是p指向数组a的首地址。如果赋值“p=&a[4];”,则p指向a[4],p+1指向a[5],而p−1指向a[3]。
【课堂练习】
✈【教师】出示【例7-2】,组织学生答题
分析程序运行结果,程序详见教材。
✈【学生】聆听、思考、分析
✈【教师】解析例题
程序运行结果如图7-5所示(详见教材)。
从程序运行结果中可以得出,*(p+i)、*(a+i)、p[i]和a[i]输出的结果都是相同的。
二、指针与字符串
✈【教师】多媒体观看“指针与字符串”视频(详见教材),让学生了解通过指针引用字符串及访问字符串元素的方法
在指针操作字符串时,需要将字符串的首地址赋给一个指针,这样才能通过该指针引用字符串。例如:
char *str; /*定义指针变量str*/
str="C language!"; /*给变量str赋初值*/
该语句等价于:
char *str="C language!"; /*初始化指针变量str */
此例中,str被定义为一个字符指针,它指向字符串常量中的首字符'C',如图7-6所示(详见教材)。
可通过指针名str访问这一存储区域,如*str或str[0]就是访问字符'C',str[i]或*(str+i)就是访问字符串的第i+1个元素。
【课堂问答】
✈【教师】随机邀请学生回答以下问题
请同学们思考,如果字符串中只有5个元素,那么上述访问str[5]会导致什么结果?
✈【学生】聆听、思考、回答
✈【教师】总结学生的回答
【课堂练习】
✈【教师】出示【例7-3】,组织学生编写代码
利用指针将两个字符串连接起来。
✈【学生】编写程序、运行、对比结果
✈【教师】解析例题
本题可以先定义两个指针变量str1和str2,分别指向两个字