C++Primer Plus第七章--函数---c++的编程模块7.3编程练习10,函数指针,函数指针数组的使用,这里算是比较复杂的情况了。

10.设计一个名为 calculate()的函数,它接受两个 double值和一个指向函数的指针,而被指向的函数
接受两个 double 参数,并返回一个 double值。calculate()函数的类型也是 double,并返回被指向的函数
使用 calculate( )的两个 double 参数计算得到的值。例如,假设 add()函数的定义如下:
double add(double x,double y)
{
return x+y;
}
则下述代码中的函数调用将导致 calculate()把2.5和10.4传递给 add()函数,并返回 add()的返回值(12.9):
double q=calculate(2.5,10.4,add);

#pragma region 10.cpp 7.10
/*
*/
#if 1
#include<iostream>
double(*pf)(double,double);
double add(double x, double y);
double sub(double x, double y);
void calculate(double, double, double(*pf)(double,double));
int main()
{
	using namespace std;
	while (true)
	{
		cout << "输入两个数:";
		double x, y;
		cin >> x >> y;
		if (!cin)
		{
			break;
		}
		calculate(x, y, add);
	}
	return 0;
}

double add(double x, double y)
{
	std::cout << x << " + " << y << " = ";
	return x + y;
}
double sub(double x, double y)
{
	std::cout << x << " - " << y << " = ";
	return x - y;
}
//函数的实现
void calculate(double a, double b, double(*pf)(double, double))
{
	std::cout<< pf(a,b);
}
#endif 
#pragma endregion

请编写一个程序,它调用上述两个函数和至少另一个与add()类似的函数。该程序使用循环来让用户
成对地输入数字。对于每对数字,程序都使用 calculate()来调用 add()和至少一个其他的函数。如果读者
爱冒险,可以尝试创建一个指针数组,其中的指针指向 add()样式的函数,并编写一个循环,使用这些指针
连续让 calculate()调用这些函数。提示:下面是声明这种指针数组的方式,其中包含三个指针:
double(*pf[3])(double,double);
可以采用数组初始化语法,并将函数名作为地址来初始化这样的数组。
继续看这个问题,这个问题需要改一下第三个函数,

第1,2double参数,第三个函数指针数组,第四个参数是函数指针数组的个数。

void calculate(double x, double y, pf fun[], unsigned numFuncs)
{
	for (unsigned i = 0; i < numFuncs; i++)
	{
		std::cout << fun[i](x,y) << std::endl;
	}

}

本章就完毕了。

  • 17
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值