函数:使用函数指针操作函数

设计一个名为calculate()的函数,他接受两个double 值和一个指向函数的指针,而被指向的函数接受两个double参数,并返回一个double值 calculate()函数的类型也是double,并返回被指向的函数值用calculate()的两个double参数计算得到的值。例如,假设add()函数的定义如下:

double add(double x,double 有)

{

      return x+y;

}

则下述代码中的函数调用将导致calculate()把2.5和10.4传递给add()函数,并返回add()的返回值(12.9):

double q = calculate(2.5, 10.4, add);

编写一个程序,它调用上述两个函数和至少另一个于add()类似的函数。该程序使用循环来让用户成对地输入数字。对于每对数字,程序都使用calculate()来调用add()和至少一个其他的函数。如果读者爱冒险,可以尝试创建一个指针数组,其中地指针指向add()样式地函数,并编写一个循环,使用这些指针连续让calculate()调用这些函数。提示:下面是声明这种指针数组地方式,其中包含三个指针: double(*pf【3】)(double, double);

可以采用数组初始化语法,并将函数名作为地址来初始化这样的数组。

#include<iostream>

double calculate(double, double, double(*p)(double, double)); 
double add(double, double); 
double  minus(double, double); 

int main(void) { 
    using std::cin;  using std::cout;   
    double (*pf[2])(double, double)={add, minus};  
    double x,y;  cout << "Input the data to calculate(q to quit)\n";  

    while(cin >> x >> y)  {   
        for(size_t i=0; i<2; i++)   {    
            cout << calculate(x,y,(*pf[i])) << std::endl;   
        }  
    }    
    return 0; 
} 

double calculate(double x, double y, double(*p)(double, double)) {  
    return (*p)(x, y); 
} 
double add(double x, double y) {  return x+y; } 
double  minus(double x, double y) {  return x-y; }


 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值