没有合适的资源?快使用搜索试试~ 我知道了~
08教师用书_第8章_指针.pdf
需积分: 0 0 下载量 89 浏览量
2023-06-26
13:02:13
上传
评论
收藏 2.13MB PDF 举报
温馨提示
试读
38页
08教师用书_第8章_指针.pdf
资源推荐
资源详情
资源评论
第 8 章 指针
8.1 教学要点
本章主要介绍指针的基本概念、指针变量的定义、指针变量的基本运算、指针作为函数
的参数、指针和数组、指针和字符串、动态内存分配和使用等知识。首先要把基本概念讲清,
一定要结合图例来说明变量、内存单元和地址之间的关系;本章重点难点较多,讲解时注意
趣味性激发学生兴趣,通过对比演示来分析指针和普通变量的区别。
8.1 节通过示例程序“密码开锁”引出指针的概念和主要知识点,教师在讲授时,重点
分析密码开锁的过程,通过过程分析来说明变量、内存单元和地址之间的关系,从而引出指
针的基本概念,通过指针与所指向变量的示意图,加深学生对指针的理解。接着介绍指针的
基本运算以及指针变量的初始化。
8.2 节主要介绍指针作为函数的参数。该小节通过例子“角色互换”引入,演示使用指
针作为函数参数的用途和用法。在本小节中要提示学生注意观察函数的形参和实参,区分按
值调用和引用调用。在具体讲解时,通过详细分析 3 个 swap()函数进行对比,讲解过程一定
要配合画出指针指向图来说明参数变量值是如何改变的。最后通过一个例子来讲解如何使用
指针作为函数参数返回多个值,解决以前一个函数最多只能 return 一个值的问题。
8.3 节通过示例程序“冒泡排序”引入数组名作为函数参数。首先重点介绍指针、数组
和地址之间的关系,分析数组下标运算的含义和指针偏移的对应关系。通过例子来说明指针
和数组可以实现相同的操作。然后重点讲述如何使用数组名作为函数的参数,最后对冒泡排
序进行详细分析,总结回顾本节知识点。
8.4 节中通过示例程序“字符串压缩”引入字符指针与字符串处理。首先重点介绍字符
指针和字符串的关联和区别。然后对常用字符串处理函数进行讲解,通过对比示例强调字符
串运算的特殊性并分析原因。
8.5 节中通过示例程序“任意个整数求和”引入用指针实现内存动态分配。首先要分析
为什么要进行内存的动态分配管理,然后介绍动态内存分配的一般步骤和具体的分配函数。
最后可以通过和学生一起使用动态内存分配的方法来改写“冒泡排序”,做到融会贯通。
讲授学时:6 学时 实验学时:4 学时
本章的知识能力结构图见图 8.1。
图 8.1 知识能力结构图
8.2 讲稿
1
介绍主要章节安排。通过这些小节的名字
引起学生对本章学习的兴趣。
指针概念与
定义
指
针
指针作为函
数的参数
指针与数组
指针与字符
串
形参和实参
按值调用和
引用调用
通过指针参数使函数返回多个值
指针、数组与地址的关系
数组名作为函数参数
字符指针与字符
串的关联和区别
常用字符串处理
函数
能够掌握
指针概念,
定义指针
变量和指
针基本运
算
能够使用数组名
作为函数参数进
行熟练编程,并能
利用指针进行数
组相关操作
掌握通过指针实
现动态内存分配,
并能进行编程
指针与动态
内存分配*
变量、内存单元
与地址的关系
指针变量
定义方式
初始化
变量使用
动态内存分配的
概念和基本步骤
常用动态内存分
配函数
能够使用字符串
常用处理函数进
行编程,并能使用
字符指针进行字
符串相关操作
能够掌握指针作
为 函数的参数进
行熟练编程,通函
数调用改变主调
函数变量的值
2
本章要点
◼ 变量、内存单元和地址之间是什么关系?
◼ 如何定义指针变量,怎样才能使用指针变量?
◼ 什么是指针变量的初始化?
◼ 指针变量的基本运算有哪些?如何使用指针
操作所指向的变量?
◼ 指针作为函数参数的作用是什么?
◼ 如何使用指针实现函数调用返回多个值?
◼ 如何利用指针实现内存的动态分配?
要点可快速过一遍,不用展开。可以在本
章知识点讲完后再回顾。
3
介绍一下游戏过程,重点放在关键点分
析。
4
8.1 寻找密码的途径分析
◼ 密码存放需要一定的存储空间作为存放地,每
个存放地都会有地址
◼ 如果知道了存放地的名字,当然能够找到密码
◼ 如果不知道存放地的名字,知道该存放地的地
址也能够取出密码
◼ 如果有另外一个地方存放了该密码存放地的地
址,那么就能顺藤摸瓜,间接找到密码
分析寻找密码的两种可能途径
5
8.1 密码存放示意图
534224
p
2416
名字
p x
地址
16 24
内容
24 5342
x
通过示意图说明地址为 16 的 P 变量内容
存放的 24 是另外一个变量 x 的地址,通
过这个地址可以顺藤摸瓜得到变量 x 的内
容:5342
强调箭头的指向
6
例8-1 利用指针模拟密码开锁游戏
获取密码的两种方法 :
#include <stdio.h>
int main(void)
{
int x = 5342; /* 变量x用于存放密码值5342 */
int *p = NULL; /* 定义整型指针变量p,NULL值为0,代表空指针 */
p = &x; /*将变量x的地址存储在p中 */
/* 通过变量名x输出密码值*/
printf("If I know the name of the variable, I can get it’s value by
name: %d\n ", x);
/* 通过变量x的地址输出密码值 */
printf("If I know the address of the variable is: %x, then I also can
get it’s value by address: %d\n",p, *p);
return 0;
}
If I know the name of the variable, I can get
it’s value by name: 5342
If I know the address of the variable
is:12ff7c, then I also can get it’s value by
address: 5342
简单描述模拟程序并运行
让学生留意 int *p,一种新的指针类型变
量定义
7
8.1.2 地址和指针-指针的概念
内存单元
地址 内容 变量
int x = 20, y = 1, z = 155;
printf("%d", x;)
直接访问:通过变量名访问
间接访问:通过另一个变量访问
把变量的地址放到另一变量中
使用时先找到后者
再从中取出前者的地址
1000 20 x
1002 1 y
1004 155 z
2000 1000 p
2002
地址 指针变量
通过对图的分析,详细说明直接访问和间
接访问。
8
通过例子说明指针变量的概念
提出 “指向”关系
9
如何定义指针变量
强调定义时类型名是指针变量所指向的
变量类型
10
注意:指针变量名是 p,不是 *p
定义指针变量可以和与它所指变量类型
具有相同类型的变量放在同一条语句中
定义。
11
详细介绍取地址符&
一定要在黑板上画出如左图那样的示意
图,强调 p 的内容是 a 的地址,然后画出
指向的箭头。
建议学生在初学指针时都必须要画出指
向关系图
12
# include <stdio.h>
int main (void)
{ int a = 3, *p;
p = &a;
printf (“a=%d, *p=%d\n”, a, *p);
*p = 10;
printf("a=%d, *p=%d\n", a, *p);
printf("Enter a: ");
scanf("%d", &a);
printf("a=%d, *p=%d\n", a, *p);
(*p)++;
printf("a=%d, *p=%d\n", a, *p);
return 0;
}
例8-2指针取地址运算和间接访问运算
a
3&a
p
*p
a = 3, *p = 3
a = 10, *p = 10
Enter a: 5
a = 5, *p = 5
a = 6, *p = 6
演示程序的运行
提示指针赋值语句 p=&a
然后画出指向关系图
13
难点:
*p++等价于*(p++)
*p++的值为 a 的值,因为 p++先返回 p 的
值作为表达式的值,然后才是 p=p+1,这
时 p 就不再指向 a 了
剩余37页未读,继续阅读
资源评论
墨漓Moli
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功