声明函数指针的数组类似声明一般的指针数组。接上文例子将其改进为使用函数指针的数组,代码如下:
#include <iostream> using std::cout; using std::endl; //函数声明 double squared(double); double cubed(double); double sum_array(double array[],int len,double (*pfun) (double)); int main(){ double array[]={1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5}; int len=sizeof array/sizeof array[0]; //定义并初始化函数指针数组 double (*pfun[2])(double)={squared,cubed}; cout<<"Sum of squares = "<<sum_array(array,len,pfun[0])<<endl; cout<<"Sum of cubes = "<<sum_array(array,len,pfun[1])<<endl; return 0; } //求平方和 double squared(double x){ return x*x; } //求立方和 double cubed(double x){ return x*x*x; } //对数组元素按照函数指针指定的函数处理后求和 double sum_array(double array[],int len,double (*pfun) (double)){ double total=0.0; for(int i=0;i<len;i++) total+=pfun(array[i]); return total; }