64,649
社区成员
发帖
与我相关
我的任务
分享
typedef double (*f)(double);
//比如下面这个fun函数以函数指针s为参数 ,返回一个函数指针,
//这个指针指向一个,参数是1个double,返回值也是double的函数
double (*fun(f s))(double){
return s;
//如果就这样return ,相当于传入什么函数,就返回什么 比如我在主函数里 f d=fun(sin) ,d还是指向sin
//请问能做到像上面红字描述的那样吗?谢谢
}
}
//你可以传两个参数,一个是函数指针,一个待计算的浮点数,如
typedef double (*fun)(double);
double ldelta = 1e-4;
double dfun(fun f, double x) {
return (f(x+delta)-f(x))/delta;
}
//然后调用
double sin(double x) {return x;} //已知sin函数
double x = dfun(sin, 1);
//或者可以用间接方式实现,如用全局变量,或者用类
//全局变量的方式
typedef double (*fun)(double);
double delta = 1e-4;
fun gdfun; //全局变量
double ddfun(double x) {return (gdfun(x+delta)-gdfun(x))/delta;} //不能动态生成函数就用固定的,通过全局变量改变求导原型
fun df(fun f) {gdfun=f; return ddfun;} //设定全局变量
//调用
double sin(double x) {return x;} //已知sin函数
fun c = df(sin); //这里设定全局变量
double v = c(1); //然后调用
//类的方式
typedef double (*fun)(double);
double delta = 1e-4;
class DFun {
private:
fun org;
public:
DFun(fun f) {org=f;}
double callDf(double x) {
return (org(x+delta)-org(x))/delta;
}
};
//调用
double sin(double x) {return x;} //已知sin函数
DFun df(sin);
df.callDf(1);