指针函数求解
void tabulate(double (*f)(double),double first,double last,double incr)
{
double x;
int i,num_intervals;
num_intervals=ciel((last-first)/incr);
for(i=0;i<=num_intervals;i++){
x=first+i*incr;
printf("%10.5f%10.5f\n",x,(*f)(x));//f是怎么调用的,请了
}
}
[解决办法]
f是一个函数指针,f的声明如下
double f(double);
调用的时候,tabulate(f, a, b, c);由于传进入的是指向函数入口的指针,知道函数入口,就可以直接执行函数了,所以调用的时候,用(*f)(x),实际上,也可以直接用 f(x)。
[解决办法]
void tabulate(double (*f)(double),double first,double last,double incr)这里的参数double (*f)(double)是一个指向参数和返回值都为double型的函数的指针——即f,既然f指向一个函数,那么这个函数就是*f,所以调用的时候就是(*f)(x).
架设你有一个函数是double g(double d);
若f=g;//g是函数名,也是函数的地址
则通过f指针调用g函数可以这样(*f)(x).