收藏 分销(赏)

指针初步PPT课件.ppt

上传人:可**** 文档编号:683170 上传时间:2024-01-31 格式:PPT 页数:21 大小:134KB
下载 相关 举报
指针初步PPT课件.ppt_第1页
第1页 / 共21页
指针初步PPT课件.ppt_第2页
第2页 / 共21页
点击查看更多>>
资源描述
第6讲 指针初步及函数的输出参数1学习路线图2引导实验引导实验任务1 编写工具函数,完成两个变量值的交换。任务2 编写函数,将一个浮点数拆分为整数部分和小数部分3任务任务 两值交换两值交换n任务描述任务描述交换两个相同数据类型交换两个相同数据类型的变量中存储的数据的变量中存储的数据n函数swap却不能达到两数交换的效果,请分析原因,并找出解决方法。【sample06-01.cpp】void swap(int a,int b)int t;t=a;a=b;b=t;41调试查找出错原因断点编号断点编号ab&a&b10200 x0012ff440 x0012ff4010200 x0012feec0 x0012fef020100 x0012feec0 x0012fef010200 x0012ff440 x0012ff405#include void swap(int a,int b);int main()int a=10,b=20;swap(a,b);printf(a=%d,b=%d,a,b);return 0;void swap(int a,int b)int t;t=a;a=b;b=t;需求一:被调函数需要直接操作主调函数中的变需求一:被调函数需要直接操作主调函数中的变量空间量空间不成功,调用后主调函数中不成功,调用后主调函数中的两个变量的值没有交换的两个变量的值没有交换n传参的实质是传参的实质是swap函函数获得了数据备份,数获得了数据备份,swap函数交换的是自函数交换的是自己变量己变量a和和b的值的值,与,与main函数中的变量函数中的变量a,b无关无关注:注:函数调用中发生的数据传送是单向的。即只能函数调用中发生的数据传送是单向的。即只能把实参的值把实参的值形参,而不能把形参的值反向地形参,而不能把形参的值反向地传送给实参。传送给实参。因此在函数调用过程中,形参的因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。值发生改变,而实参中的值不会变化。实参实参 a=10 b=20 a=20 b=10 形参形参 a=10 b=20 a=20 b=10abab67解决方案:输出参数n将将main函数中变量的地址作为参数传递到函数中变量的地址作为参数传递到被调函数被调函数&a,&bnswap函数中接受函数中接受main函数中变量的地址,函数中变量的地址,对对main函数中变量按地址访问。函数中变量按地址访问。n函数形参变量是能接受地址的参数函数形参变量是能接受地址的参数输输出参数出参数n能接受地址的变量能接受地址的变量指针变量指针变量7指针的概念n指针内存空间的地址。n指针变量可以存放地址的变量,长整型。n指针变量有数据类型,数据类型确定指针变量从其值(地址值)开始可控制的字节数由指针变量所指的存储单元的数据类型确定。n使用指针变量可突破局部变量的使用范围的限制,按地址访问所指向的内存空间。89指针变量的定义数据类型数据类型 *变量名变量名 int *p,a;np为指向为指向int型变量的指针变量,即型变量的指针变量,即p中只能存放中只能存放int变量的地址值变量的地址值n使用指针前一定要对指针变量赋值使用指针前一定要对指针变量赋值910指向操作n给指针变量赋地址值给指针变量赋地址值 指针变量名指针变量名 =&普通变量名普通变量名 p=&a;/&a为变量为变量a的起始地址的起始地址&aap引用n引用的实质是按指针变量的地址值访问内引用的实质是按指针变量的地址值访问内存空间。存空间。n*p an如:如:a=5;*p=5;1011指针变量应用指针变量应用被调函数通过输出参数向主调函数传值被调函数通过输出参数向主调函数传值n被调函数形参使用输出参数获取主调函数中局部变量的地址值n输出参数指针变量n在被调被调函数中通过指针变量的形参访问主调函数的局部变量。11交换算法的实现 sample06_1.cppnvoid swap(int*pa,int*pb)nint t;n t=*pa,*pa=*pb,*pb=t;nnint main()nnswap(&a,&b);n nreturn 0;n&b20&a10apabpbpa=&a;pb=&b;12任务2 编写函数split,将一个浮点数拆分为整数部分和小数部分n任务描述任务描述对任意一个浮点数,分对任意一个浮点数,分别取其整数部分和小数别取其整数部分和小数部分,得到两个结果部分,得到两个结果nsplit函数并不能达到分解浮点数的目的【sample06-02.cpp】nvoid split(float x)nn int iNumber;n float fNumber;n iNumber=(int)x;n fNumber=x-iNumber;n13需求二:被调函数需要返回多个结果到主函数对任意一个浮点数,分别取其整数部分和小数部分,得到两个结果,一个函数只能通过返回语句return返回一个值。如何将函数计算得到的两个结果返回到主调函数14解决方案n在main函数中预先准备好两个存放结果的变量,将这两个变量的地址传递到split函数中,split函数按地址访问main函数的变量,直接将结果写进main函数的变量中。15拆分浮点数的实现 sample06_02.cppvoid split(float number,int*pi,float*pf)*pi=(int)number;*pf=number-(*pi);int main()split(number,&iNumber,&fNumber);return 0;&fNumber&iNumberiNumberpifNumber pf 16实践实践编程实现求某天是该年的几月几日?17编程实现求某天是该年的几月几日 sample06_03.cppn要求:n(1)定义判断某年是否是闰年函数 int isLeap(int year)n(2)定义已知某年及该年的第几天求改该天是该年的几月几日函数 void getDate(int y,int days,int*pm,int*pd)n定义main函数实现功能181819getDate函数分析n算法分析:算法分析:第几天变量为days循环i从1月开始n获得第i月的天数dayn如果daysday则days减去第i月的天数dayn否则 终止循环(break)i即为所求月份,days的值为所求日数。n已知:年、第几天n求:哪月、那日1920n算法实现:算法实现:void getDate(int y,int days,int*pm,int*pd)/*y为年份,days为该年的某天,pm指向主调函数中存放某天的月值变量,pd指向主调函数中存放某天的日值变量*/int m,d;(计算得某天的月份m,日数d)*pm=m;*pd=d;20课后阅读课后阅读第8章8.1,8.221
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服