指针初步.ppt
- 文档编号:1758151
- 上传时间:2022-10-23
- 格式:PPT
- 页数:21
- 大小:215.50KB
指针初步.ppt
《指针初步.ppt》由会员分享,可在线阅读,更多相关《指针初步.ppt(21页珍藏版)》请在冰豆网上搜索。
1,第6讲指针初步及函数的输出参数,学习路线图,2,引导实验,任务1编写工具函数,完成两个变量值的交换。
任务2编写函数,将一个浮点数拆分为整数部分和小数部分,3,任务两值交换,任务描述交换两个相同数据类型的变量中存储的数据函数swap却不能达到两数交换的效果,请分析原因,并找出解决方法。
【sample06-01.cpp】voidswap(inta,intb)intt;t=a;a=b;b=t;,4,1调试查找出错原因,5,#includevoidswap(inta,intb);intmain()inta=10,b=20;swap(a,b);printf(a=%d,b=%d,a,b);return0;voidswap(inta,intb)intt;t=a;a=b;b=t;,需求一:
被调函数需要直接操作主调函数中的变量空间,不成功,调用后主调函数中的两个变量的值没有交换,传参的实质是swap函数获得了数据备份,swap函数交换的是自己变量a和b的值,与main函数中的变量a,b无关,注:
函数调用中发生的数据传送是单向的。
即只能把实参的值形参,而不能把形参的值反向地传送给实参。
因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
实参a=10b=20a=20b=10形参a=10b=20a=20b=10,7,解决方案:
输出参数,将main函数中变量的地址作为参数传递到被调函数&a,&bswap函数中接受main函数中变量的地址,对main函数中变量按地址访问。
函数形参变量是能接受地址的参数输出参数能接受地址的变量指针变量,8,指针的概念,指针内存空间的地址。
指针变量可以存放地址的变量,长整型。
指针变量有数据类型,数据类型确定指针变量从其值(地址值)开始可控制的字节数由指针变量所指的存储单元的数据类型确定。
使用指针变量可突破局部变量的使用范围的限制,按地址访问所指向的内存空间。
9,指针变量的定义,数据类型*变量名int*p,a;p为指向int型变量的指针变量,即p中只能存放int变量的地址值使用指针前一定要对指针变量赋值,10,指向操作,给指针变量赋地址值指针变量名=/&a为变量a的起始地址,引用,引用的实质是按指针变量的地址值访问内存空间。
*pa如:
a=5;*p=5;,11,指针变量应用被调函数通过输出参数向主调函数传值,被调函数形参使用输出参数获取主调函数中局部变量的地址值输出参数指针变量在被调函数中通过指针变量的形参访问主调函数的局部变量。
12,交换算法的实现sample06_1.cpp,voidswap(int*pa,int*pb)intt;t=*pa,*pa=*pb,*pb=t;,intmain()swap(,pa=,任务2编写函数split,将一个浮点数拆分为整数部分和小数部分,任务描述对任意一个浮点数,分别取其整数部分和小数部分,得到两个结果split函数并不能达到分解浮点数的目的,【sample06-02.cpp】voidsplit(floatx)intiNumber;floatfNumber;iNumber=(int)x;fNumber=x-iNumber;,13,14,需求二:
被调函数需要返回多个结果到主函数,对任意一个浮点数,分别取其整数部分和小数部分,得到两个结果,一个函数只能通过返回语句return返回一个值。
如何将函数计算得到的两个结果返回到主调函数,解决方案,在main函数中预先准备好两个存放结果的变量,将这两个变量的地址传递到split函数中,split函数按地址访问main函数的变量,直接将结果写进main函数的变量中。
15,拆分浮点数的实现sample06_02.cpp,voidsplit(floatnumber,int*pi,float*pf)*pi=(int)number;*pf=number-(*pi);,intmain()split(number,16,实践,编程实现求某天是该年的几月几日?
17,编程实现求某天是该年的几月几日sample06_03.cpp,要求:
(1)定义判断某年是否是闰年函数intisLeap(intyear)
(2)定义已知某年及该年的第几天求改该天是该年的几月几日函数voidgetDate(inty,intdays,int*pm,int*pd)定义main函数实现功能,18,19,getDate函数分析,算法分析:
第几天变量为days循环i从1月开始获得第i月的天数day如果daysday则days减去第i月的天数day否则终止循环(break)i即为所求月份,days的值为所求日数。
已知:
年、第几天求:
哪月、那日,20,算法实现:
voidgetDate(inty,intdays,int*pm,int*pd)/*y为年份,days为该年的某天,pm指向主调函数中存放某天的月值变量,pd指向主调函数中存放某天的日值变量*/intm,d;(计算得某天的月份m,日数d)*pm=m;*pd=d;,课后阅读,第8章8.1,8.2,21,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指针 初步
![提示](https://static.bdocx.com/images/bang_tan.gif)