将指向函数的指针作为参数的写法如下:
void estimate(int line, double (*pf)(int))
上面的estimate函数中的两个参数,第一个参数是一个int型的参数,第二个参数就是一个指向接收一个int型参数的函数。
这样来写的好处是可以直接将一个函数传递个另外的一个函数。
举例说明:
1、首先我们定义一个这样的函数:
double sum(int n) {
double result = 0;
for (int i = 1; i <= n; i++) {
result += i;
}
return result;
}
这个函数是用来求1--n的整数之和
2、在定义这样的一个函数用来sum函数在某一条线上的平均值。
void estimate(int line, double (*pf)(int)) {
double sum = 0;
int count = 0;
for (int i = 1; i <= line; i++) {
sum += (*pf)(i);
count++;
}
double average = sum / count;
printf("The average value of the function on line %d is %f\n", line, average);
}
3、然后我们来调用这个函数
estimate(5, sum);
得到的结果如下所示
The average value of the function on line 5 is 3.000000
sum
函数在前5个整数上的平均值为3