指向函数的指针

函数是实现特定功能的程序代码的集合,实际上,函数代码在内存中也要占据一段存储空间(代码区内),这段存储空间的起始地址称为函数入口地址C++规定函数入口地址为函数的指针,即函数名既代表函数,又是函数的指针(或地址)。

C++允许定义指向函数的指针变量,定义形式为:

返回类型 (*函数指针变量名)(形式参数列表),...;

它可以指向如下形式的函数:

返回类型 函数名(形式参数列表)

{

函数体

}

int (*p)(int a, int b); //定义函数指针变量

使函数指针指向函数 ,可以将函数的地址赋值给函数指针变量,形式为:

函数指针变量=函数名;

它要求函数指针变量与指向函数必须有相同的返回类型、参数个数、 参数类型

例如假设:

int max(int a, int b); //max函数原型
int min(int a, int b); //min函数原型
int (*p)(int a, int b); //定义函数指针变量
p=max;//p是指向max函数的指针

它也可以指向函数min,即可以指向所有与它有 相同的返回类型、参数个数、参数类型的函数。

通过函数指针调用函数

对函数指针间接引用即是通过函数指针调用函数,一般形式为:

函数指针(实参列表)

通过函数指针调用函数,在实参、参数传递、返回值等方面与函数名调用相同。例如:

c=p(a,b); //等价于c=max(a,b);

函数指针的用途:

指向函数的指针多用于指向不同的函数,从而可以利用指针变量调用不同函数,相当于将函数调用由静态方式(固定地调用指定函数) 变为动态方式(调用哪个函数是由指针值来确定)。

 

 #include <iostream>
 #include <cmath>
 using namespace std;
 double integral(double a,double b,double (*f)(double x))
 { //求定积分
 int n=1000, i;
 double h, x, s=0.0;
 h=(b-a)/n;
 for(i=1;i<=n;i++) {
 x=a+(i-1)*h;
 s=s+(f(x)+f(x+h))*h/2; //调用f函数求f(x)、f(x+h)
 }
 return s;
 } 
 double f1(double x) 
 { return 1+x; 
 } 
 double f2(double x) 
 { return exp(-x*x/2); 
 } 
 double f3(double x) 
 { return x*x*x; 
 } 
 int main() 
 { 
 double a,b; 
 cin>>a>>b; 
 cout<<(integral(a,b,f1)+integral(a,b,f2)+integral(a,b,f3))<<end l;
 return 0; 
 }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木木(。・ω・。)ノ♡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值