当前位置:首页 » 参考文献 » 函数指针引用

函数指针引用

发布时间: 2021-03-30 03:30:23

① 用函数指针指向要调用的函数,并进行调用,此题运行会出错。

这题出的有问题!

在最新版本的C/C++编译中是编译不通过的!(也许老版本的编译器支持!)


因为f1(double) 和f2(double,double)参数个数不同,所以函数指针定义这样写是不对的。

你若想编译通过,只能定义两个指针

#include<stdio.h>
doublef1(doublex)
{returnx*x;}
doublef2(doublex,doubley)
{returnx*y;}
doublefun(doublea,doubleb)
{
/**********found**********/
double(*fa)(double);//一个参数的
double(*fb)(double,double);//两个参数的
doubler1,r2;
/**********found**********/
fa=f1;//修改f=fa
r1=fa(a);//修改f=fa
/**********found**********/
fb=f2;//修改f=fb
r2=(*fb)(a,b);//修改f=fb
returnr1+r2;
}
main()
{
doublex1=5,x2=3,r;
r=fun(x1,x2);
printf(" x1=%f,x2=%f,x1*x1+x1*x2=%f ",x1,x2,r);
}

② 当函数参数使用引用传参时,怎样通过函数指针来调用它呢

typedef int (*pfn)(int &,int &);
pfn Max=max;
int a=0,b=1;
Max(a,b);
这样有错吗?

③ 如何通过函数指针调用函数

一般需要定义一个函数指针类型

typedef int (*function_pointer_t) ( int arg1, int arg2 );

然后,定义函数指针变量

function_pointer_t fp_invoker = 0;

函数指针可以动态改变内容,改变调用对象,假设有两个函数

int function_sum( int arg1, int arg2 )
{
return arg1+arg2;
}
int function_sub( int arg1, int arg2 )
{
return arg1-arg2;
}

注意到两个函数的原型与函数指针类型是一致的。以下是调用

fp_invoker = function_sum; // 直接用函数名赋值即可
fp_invoker(1,2); // 调用时,可以认为函数指针便是函数名,此时调用加法
fp_invoker = function_sub; // 同理,切换到减法
fp_invoker(1,2); // 调用减法

以上都是直观的用法,通常函数指针用于回调,即下层函数先将函数指针内容保存起来,处理结束后,再调用。此时要注意首先检查函数指针内容是否为空。

if( fp_invoker ){
fp_invoker( arg1, arg2 );
}

④ 如何引用作用域外的函数指针

先在头文件声明函数,然后在cpp中实现时,声明一个Class A类型的变量,比如是m,然后调用m.AWndProc()

⑤ 在C语言中,指向函数的指针怎么调用函数

其实,函数指针确实不是“指向函数的指针”
函数指针,就是函数指针,加不加*没有实际意义。
二楼的那个:
c=(*p)(a,b);
也可以写成
c=(****************************************************p)(a,b);
或者
c=p(a,b);
你说它指向什么?
PS,加*有特殊的用途,初学者就算了

热点内容
涂鸦论文 发布:2021-03-31 13:04:48 浏览:698
手机数据库应用 发布:2021-03-31 13:04:28 浏览:353
版面217 发布:2021-03-31 13:04:18 浏览:587
知网不查的资源 发布:2021-03-31 13:03:43 浏览:713
基金赎回参考 发布:2021-03-31 13:02:08 浏览:489
悬疑故事范文 发布:2021-03-31 13:02:07 浏览:87
做简单的自我介绍范文 发布:2021-03-31 13:01:48 浏览:537
战略地图参考 发布:2021-03-31 13:01:09 浏览:463
收支模板 发布:2021-03-31 13:00:43 浏览:17
电气学术会议 发布:2021-03-31 13:00:32 浏览:731