收藏 分享(赏)

函数指针与指针函数.ppt

上传人:天天快乐 文档编号:1140995 上传时间:2018-06-14 格式:PPT 页数:23 大小:232KB
下载 相关 举报
函数指针与指针函数.ppt_第1页
第1页 / 共23页
函数指针与指针函数.ppt_第2页
第2页 / 共23页
函数指针与指针函数.ppt_第3页
第3页 / 共23页
函数指针与指针函数.ppt_第4页
第4页 / 共23页
函数指针与指针函数.ppt_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、73 函数指针与指针函数,指针变量可以指向变量地址、数组、字符串、动态分配地址,同时也可指向函数,每一个函数在编译时,系统会分配给该函数一个人口地址,函数名表示这个人口地址,那么,指向函数的指针变量称之函数指针变量.,例如: float fun(int,char); float (* p)( ); pfun;,2用函数指针变量调用函数 可用函数指针来调用函数. 其形式为: (*函数指针变量名)(),例如: int i=5; char ch=a; float fun(int,char),(*p)( ); pfun; (*p)(i,ch); ,int i=5; char ch=a; float f

2、un(int,char); fun(i,ch);,例718利用直接函数调用,求函数返回值。,#include main() int a3,b=5; float f1(),f2(); printf(”41fn”,f1(a,b); printf(”41fn”,f2(a,b); float f1(int x,int y) return x+y; float f2(int x,int y) return(10*y)x; ,运行结果: 8.0 1.7,例719利用函数指针变量调用,求函数返回值 #include sub(int x,int y,float(*fun)() float result; re

3、sult(*fun)(x,y); printf(”4.1fn”,result); float f1(int x1,int y1) return x1+y1; float f2(int x2,int y2) return (y2*1.0)/x2; main( ) int a=3,b=5; float fl( ),f2(); sub(a,b,f1); sub(a,b,f2); ,7.3.2 指针函数,1定义 函数返回值可以是int、char、float等,也可以为地址值。 函数返回值是地址值的函数称指针函数. 也就是定义该函数的类型为指针类型。该函数就一定有相应指针类型的返回值。返回值必须用同类型

4、的指针变量来接受。,例如: float *fun(); float *p; pfun(a);,例720指针函数的含义。 main() float a 1,2,3,4,5,*p,*fun(); pfun(a); *指针函数的调用形式* printf(”31fn”,*p); float *fun(float *x) return +x; ,例721两个字符串的连接。 include #define N1 20 #define N2 10 main( ) char *s,s1Nl,s2N2; char *strsl2(char *,char *); gets(s1); gets(s2); sstrs

5、l2(sl,s2); printf(”s12sn”,s); ,char *strsl2(char *pl,char *p2) char *temp; temp=pi; while(*p1) p1+; while(*p2) *pl*p2; pl+; p2+; p10; return temp; ,运行结果: I am a good student *以上是键盘输入* Iarnagoodstudent *输出结果*,743 带参的main函数,1命令行参数 在操作系统下为执行某个程序或命令而键人的一行字符称命令行,通常命令行含有可执 行文件名及若干个参数,并以回车结束。如: C:xcopy cex

6、am d:cexam/s/e 处理这些参数用指针数组比用二维数组会更简洁、方便,这也是一维字符指针数组的一种重要应用。 main函数就是用指针数组接收命令行参数的。,2main函数的参数 它的形式为: main(int argc,char *argv ) 其中agrc与argv是main函数的两个形参。main函数是由系统调用,形参的值是由命令行参数给出,形参argc是统计命令行参数的个数,所以它是整型数据,形参argv是指针数组,它的每个元素指向命令行对应以字符串表示的参数,其元素个数由argc确定。,例723下列程序的可执行文件名为testexe。 main(int argc,char *

7、argv) int i; printf(“argcdn”,argc); for(i1;itest IBMPC COMPUTER则程序运行结果: argc3 1BM-PC COMPUTER,例724下列程序的可执行文件名为smexe,该程序根据命令行参数实现求一个正整数的累加和。 #include main(int argc,char *argv) int n,i,s=0; natoi(argv2); if(argc3) exit(0); for(i1;ism + 10 则程序运行结果: sum:55,实验题讲解,1、第一套题:/*/第一题:考查考生对语言环境的使用、编译、改错与执行程序的能力。

8、 、改正程序中的错误,使程序能输出正确的结果; 、完成程序后请务必编译并运行程序,没有执行程序的不得分; 考生不得修改=到-之外的任何程序!/*/#include #include #include ,/* 编写函数:fun(char str1, char str2), 函数fun的功能是在字串 str1 中找出所有小写字母转成大写字母,大写字母转成小写字母后,结果依次存入字符数组 str2 中,str1 不变仍为原字串。 例如:字符串 str1 为 91A2BC. a1bc,调用函数 fun 后,字符数组 str2将存入91a2bc. A1BC,str1仍然是91A2BC. a1bc 。*/

9、,fun( char str1, char str2) /*=*/ int i,j,k,len,len1; char ch; len=strlen(str1); strcpy(str2,); k=0; for (i=0;i=A /*-*/,;,ilen,实验题第二题,/*函数编写,使其按给出的表达式计算。式中:Xn 表示 x 的 n 次方,x为 x 的绝对值,(注意,语言中 abs( x ) 函数不能用于实型计算)。表达式: 2x - 1.76 fun1(x)= - Cos(x-1.3) (x-0.3)(10.5 -x)例如:fun1( 1.66 ) = -0.806*/,double fun

10、1( double x ) double y=0.0;/*=*/*-*/ return y; ,/* 函数编写,使其按给出的表达式计算分段函数。Xn 表示 x 的 n 次方, -0.67x2+1.17x -1.67 当 x 1.17 时 例如:fun2( 0.76 ) = -1.168 fun2( 1 ) = -1.170 fun2( 1.76 ) = 1.686*/,double fun2( double x ) double y=0.0;/*=*/*-*/ return y; ,第三题实验题,/* 第三题:考查考生按要求编写程序的能力。请按注释提示的要求完成= 到-之间的程序。考生在本题中

11、应完成二个函数。完成程序后请务必编译并运行程序,没有执行程序的不得分。 注:考生不得修改=到-之外的任何程序。*/,/* 下述函数 double fun(double x, int n) 的功能是计算如下 公式的值:(其中 xn 表示 x 的 n 次方,n! 为 n 的阶乘) x2 x4 x6 x(2*n-2) fun( x, n )= 1 + + + + 2! 4! 6! (2*n-2)! 前 n 项之和,其中 n1 。 例如: fun( 6.66, 8 ) = 389.443fun( 6.66, 15 )= 390.276 (提示:若第 i-1 项的值为 t ,则第 i 项的值为 t*x*

12、x/(2*i-3)/(2*i-2))*/,double fun ( double x, int n )/*=*/ double y=0.0; return y; /*-*/,double t=1;int i;y+=t;for (i=2;i=n;i+) t=t*x*x/(2*i-2)/(2*i-2); y+=t; ,/* 编写函数:fun4( int a, int b, int na, int *nb ),其中 a 数组有 na个元素(均为正整数)。函数 fun4 的功能是:找出 a 数组元素中所有奇数存入 b数组中,在 nb 所指的单元中存入这些奇数的个数,并由大到小对b数组元素排序。 (数组下标从 0 开始,不能改动 a 数组元素的值)。 例如:a 数组为:11, 13, 14, 12, 15, 16, 18, 19, 17, 110;则调用函数 fun4 后 b 数组为:19, 17, 15, 13, 11;且 *nb 的值为:5(即 b 数组共存入了5个元素)。*/,void fun4( int a , int b , int na, int *nb )/*=*/*-*/ ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报