第8单元指针(第一讲)
授课内容:
学时:
2学时(90分钟)教学目的和要求:
通过变量的定义在内存中的存储方式的讲解,掌握指针的定义、引用。
教学重点:
了解指针的概念,掌握指针的定义,掌握指针的引用教学难点:
指针的理解和运用。
教学方法和手段:
本节采用以教师为主导,学生为主体的案例教学,首先通过实例引出本节的教学内容,同时在教学过程中同时采用提问法、讨论法和互动式教学方法。
思政元素:增强团结、合作意识、灵活处理问题授课内容提纲:
一、复习旧课导出新课
问题L内存是什么?
问题2:内存如何工作?
问题3:变量如何在内存中存储?
教师总结:
可以存放内存地址的变量是指针,存储在指针中的地址是另一个变量的首地址。我们可以定义指针变量P,存放变量sum的首地址,变量sum是一个值为0的整型变量。存储在p中的地址是sum的第一个字节的地址。
二、新课讲解
先演示任务一,引入,引起学生兴趣。再逐一讲解以下知识点,最后指导学生能够编写任务程序。
教师总结:
指针是C语言中最强大的工具之一,是精华所在,也是最容易让人困惑的主题。只有在正确理解指针
概念的基础上,才能对其操作灵活的运用。
(-)任务一:交换两个变量的值一一指针的概述
•讲解步骤:
1.通过编程解决两个变量数据交换的问题,说明内存变量的变化。
2.借助指针完成交换
•指针变量的定义
格式:基类型*指针变量名
举例:
int *pl;(定义pl为指向整型变量的指针变量)char *p2;(定义p2为指向字符
型变量的指针变量)
float *p3;(定义p3为指向实型变量的指针变量)
・指针变量赋值
1.通过取地址运算符(&)获得地址值单目运算符(&)用来求出运算对象的地址,利用它可以把一个变量的地址教学回顾:以提问方式,教师引导总结
【约10分钟】
新课讲解1:
【约35分钟】
1.内存操作引入,吸引学生学习兴趣
2.思路指导:
教师引导学生思考
变量的定义与使用
在内存中的变化。
教师引导学生总结回答下列问题:内存的工作原理。
赋给指针变量。 举例:
int a=5, *p, *q;p=&a;
指针变量的定义格式scanf ((〃 %d 〃,&a );和 scanf (" %d 〃,p )是等价的。 2 .通过指针变量获得地址值
可以通过赋值运算,把一个指针变量中的地址值赋给另一个指针变量,从而 使这两个指针变量指向同一地址。例如,假设有上面的定义,那么语句:q 二p ;
使指针变量q 中也存放了变量a 的地址,也就是说指针变量p 和q 都指向了 整型变量a 。
注意:赋值号两边指针变量的基类型必须相同。 3 .给指针变量赋“空”值:p=NULL;
NULL 是在stdio.h 头文件中定义的预定义符,因此在使用NULL 时,应该在 程序的前面出现预定义行:# include " stdio.h"。 • 指针变量的引用
&、*运算符。注意是用在指针变量上的,不是“位与”,“乘”运算符。&运算符 (取地址运算符):表示取变量的地址。*运算符(指针运算符、间接访问运算符): 访问指针变量指向的变量的值。 • 任务实施
# include "stdio.h"main ()
{int a, b, *pl, *p2,p;printf ("请输入 a 和 b:\n H ); scanf (n %d,%d H , &a, &b );pl=&a; p2=&b; if (a<b ){p=*pl; *pl=*p2;* p2=p;}
printf (n \na=%d,b=%d\n'\ a, b );printf ("指针 lmax=%d,指针 2min=%d\n n , *pl, *p2); )特别提示
(二)工作任务二:三个数排序一一指针变量作为函数的参数【35分钟】讲解步骤: 1 .用函数编写三个数排序程序。
2 .用变量名作为函数参数传递.用指针作为函数参数传递
•任务实施void swap (int *p l,int *p2) (
int temp;
temp=*p 1; *p[=*p2; *p2=temp;/* exchange *p 1 ,*p2 */ main()
教师通过上述讲解 任务总结分析:教师 带着学生分析指针 的功能,定义与引 用。
新课讲解2【约35 分
钟】 思路指导:
教师引导学生 思考函数的参数。 提问学生:函数参 数的传递形式? 教师讲解指针作为 函数参数的地址传 递
int a,b,c;int *pa,*pb,*pc;
printf("请输入
a,b,c:\iT);scanf(n%d %d %d n,&a,&b,&c);
pa=&a; pb=&b; pc=&c;if (*pa>*pb)
swap(pa,pb);
if(*pb〉*pc)swap(pb,pc);
if (*pa>*pc)swap(pa,pc);
printf(n swaped:\n n);
printf(”a=%d,b=%d,c=%d\n”,*pa,*pb,*pc);}
•特别提示
变量名作为参数是值传递,指针作为参数是地址传递。
三.教学总结与作业布置
•总结.嘉针的定义、引用?
1.指针作为函数参数?
•作业提交方式:上传服务器
课后附记
提醒学生
注意教师带着学生分析变量名和指针作为参数的传递区别总结:采用教师引导学生回答的方式进行
【约10分钟】
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论