§10.5函数指针

§10.5函数指针

ID:38574489

大小:224.00 KB

页数:38页

时间:2019-06-15

§10.5函数指针_第1页
§10.5函数指针_第2页
§10.5函数指针_第3页
§10.5函数指针_第4页
§10.5函数指针_第5页
资源描述:

《§10.5函数指针》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、§10.5函数指针一、用函数指针变量调用函数C语言中的指针,既可以指向变量(整型、字符型、实型、数组等),也可以指向程序的代码(如函数)。一个函数在编译时被分配一个入口地址(第一条指令的地址),这个入口地址称为函数的指针。如果一个指针变量的值等于函数的入口地址,称为指向函数的指针变量,简称为函数指针。可以通过函数指针来调用函数。[例10.23]求a和b中的大者。用函数指针调用函数max()main(){intmax(int,int)int(*p)(int,int);inta,b,c;p=max;scanf("%d,%d",&a,&b);c=(*p)(a

2、,b);printf("a=%d,b=%d,max=%d",a,b,c);}用函数名调用函数max()intmax(intx,inty);/*原型*/main(){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("a=%d,b=%d,max=%d",a,b,c);}被调函数maxintmax(intx,inty){intz;if(x>y)z=x;else    z=y;returnz;}说明:1、函数指针定义的一般形式:函数返回值类型(*指针变量名)(形参类型)除函数名用(*指针变量名)代替外,函数指针的

3、定义形式与函数的原型相同。例:int(*p)(int,int);仅当形参类型是int时,可以省略形参类型,一般不要省略。(见例10.25)int(*p)();2、语句p=max,把函数max的入口地址赋给函数指针p,因此,c=(*p)(a,b)中,*p就是调用函数max。注意:语句p=max中,函数名代表函数的入口地址,max后不跟函数参数。用函数指针调用函数时,应指定实参。3、(*p)()表示一个指向函数的指针变量,它可以先后指向不同的函数。4、指向函数的指针变量p,象p++、p--、p+n等运算是无意义的。二、函数指针作函数的参数intf1(int

4、i);intf2(inti,intj);intsub(int(*x1)(int),int(*x2)(int,int));main(){sub(f1,f2);}intf1(inti){printf("f1,i=%d",i);returni*2;}intf2(inti,intj){printf("f2,i=%d,j=%d",i,j);returni+j;}intsub(int(*x1)(int),int(*x2)(int,int)){inta,b,i=3,j=2;a=(*x1)(i);b=(*x2)(i,j);printf("sub,a=%d,b=

5、%d",a,b);}练习:有以下程序,程序运行后的输出结果是()intfa(intx){returnx*x;}intfb(intx){returnx*x*x;}intf(int(*f1)(),int(*f2)(),intx){returnf2(x)-f1(x);}main(){inti;i=f(fa,fb,2);printf("%d",i);}4[例10.24]设一个函数process,在调用它的时候,每次实现不同的功能。输入a和b两个数,第一次调用时找出a和b中大者,第二次调用时找出a和b中小者,第三次调用时求a与b之和。分析:将求大值、求小

6、值、求和值分别设计为函数max、min、add。process使用指针调用这些函数。intmax(intx,inty);/*求大值*/ intmin(intx,inty);/*求小值*/ intadd(intx,inty);/*求和值*/voidprocess(intx,inty,int(*fun)(int,int));voidmain() {inta,b;printf("enteraandb:");scanf("%d,%d",&a,&b);printf("max=");process(a,b,max);printf("min=");process(a

7、,b,min);printf("sum=");process(a,b,add);}intmax(intx,inty) {intz;if(x>y)z=x;elsez=y;returnz;}intmin(intx,inty) {intz;if(x

8、 }§10.6返回指针的函数一般形式:      类型标识符*函数名(参数表)int*a(in

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。