资源描述:
《C语言程序设计教程 高等教育计算机类 李树华主编 教学课件18 22指针.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、指针指针能力目标系统的显现和交互作用:理解函数的思想,及简单系统的分解和模块(函数)之间的交互分析问题:理解提出的问题(程序、项目)的需求选择逻辑论点和解决方法:理解程序设计结构及对应的算法思想软件实现过程:理解已经设计好的数据结构和模块划分,清楚系统中的结构,能够讨论并实现程序,验证预期的结果指针演示学生成绩管理系统V2.0版结合学生成绩管理系统V1.0版,了解V2.0中每个功能的基本要求。提供项目文档,详细说明每个功能。提出问题:在学生成绩管理系统V1.0的基础上,如何能够做到用指针来灵活操作数组元素引例:演示交换两个数的程序swap函数,通过实际交换效果导入为什么需要用指针?指
2、针教学任务分配:根据学生成绩管理系统V2.0的功能需求,要求掌握以下各知识:指针定义、初始化、引用及指针作函数参数(2学时)指向一维数组的指针使用(输入/输出)(2学时)指向一维数组的指针使用(查询、排序)(2学时)指向字符串的指针使用(2学时)指针作函数参数应用(2学时,自学)扩展知识:指向二维数组的指针(2学时,自学)项目训练(课堂2学时)指针(约2学时)指针概念、定义和引用程序分析课堂实践课堂小结、作业课堂目标应知了解指针的概念掌握指针的定义和应用应会指针变量的定义、引用和初始化专业英语词汇英文词汇对应的中文意义pointer指针NULL空指针&取普通变量地址*取指针指向的地址
3、中存储的值address地址回顾与提问简单回顾一维数组的常用操作引入指针概念数组名作函数参数的意义根据对数组的理解:数组名是一组连续存储的数据首个单元的地址(首地址)。通过这个首地址,就可以在某个函数中(如input)引用另外一个函数(如main)中的数组的每个元素。为什么?因为:数组名本身就是一个“指针”,在C语言中,通过“指针”可以突破函数的界限,访问其他函数的变量的值。分析与讲解什么是指针?指针,全称为“指针变量”,在这个变量中存储的是内存中的另一个变量的地址。怎么理解?通过指针,可以间接先找到某个变量的地址,从而再找出这个地址对应的内存单元的值(也即得到了某个变量的值)分析与
4、讲解指针变量的定义定义形式如下:数据类型*指针变量名;如:int*p1,num;表示的意思为:定义了一个指针变量p1,它可以指向的是一个整型数据。或者说,这时候p1中应该存储的是一个整型变量的地址。注意:指针变量定义了之后,需要给它赋一个确定的变量的地址,否则,就会出现严重的系统错误。分析与讲解指针变量的引用#includemain(){inta;//定义一个整型变量aint*p1;//定义指向整型变量的指针p1p1=&a;//p1中应存放变量a的地址(p指向a)*p1=5;//通过指针变量p1给a赋值printf("a=%d",a);}结论:当指针p指向了变量a后
5、,就有:p&a*pa分析与讲解指针变量的引用结论:当指针p指向了变量a后,就有:p&a*pa指针的用处:主要用来作函数的参数,通过指针作参数,可以让一个函数得到多个“返回值”(函数用return只能得到一个返回值)指针作函数参数例1普通变量作函数参数。编写函数实现两个整型变量的交换。#includevoidswap(intx,inty);main(){inta,b;a=10;b=20;swap(a,b);printf("a=%d,b=%d",a,b);}voidswap(intx,inty){inttemp;temp=x;x=y;y=tem
6、p;}运行结果:a=10,b=20(奇怪?怎么没交换成功?)图1swap函数被调用时的内存分配图交换不成功的原因:swap函数中的变量x,y,temp是swap的“私有财产”,main函数是访问不到的,故在swap函数中交换虽然成功,但不能影响到main函数中的变量a,b。所以a,b的值仍然保持原样不变。例2指针作函数参数。编写函数,实现两个整型数据交换。#includevoidswap(int*pa,int*pb);main(){inta,b;a=10;b=20;swap(&a,&b);printf("a=%d,b=%d",a,b);}voi
7、dswap(int*pa,int*pb){inttemp;temp=*pa;//*pamain中的变量a*pa=*pb;//*pbmain中的变量b*pb=temp;}运行结果:a=20,b=10图2swap函数被调用时的内存分配图图3swap函数调用结束时的内存分配图例3指针作函数参数。分析swap函数交换的是什么?voidswap(int*pa,int*pb);main(){inta,b;a=10;b=20;swap(&a,&