有一个函数,这个函数有一个是函数指针的参数,怎么返回这个参数变化后的函数指针
看到一个问题是
众所周知,近似求函数f(x)的导函数,可以用公式 ( f(x+delta)-f(x) )/delta,为了方便起见,规定delta=1e-4,并且不考虑f(x)不可导的情况。
在C++中,如何建立一个函数,以给定的原函数为参数,返回一个导函数的指针,调用这个指针(并给一个参数x),就可以获得导数值。
例如我们给定sin函数,就应当得到cos函数,调用cos(x)就能得到相应的值。
PS:
如果没有说明白的话,可以看下面的例子。
对于lua语言,允许函数内定义函数,以及函数返回函数,实现方法是:
function df( f )
return function(x)
return ( f(x+delta)-f(x) )/delta
end
end
--假设我们已经定义了一个sin(x)函数
调用导函数方法如:
c=df( sin ) --求出正弦函数的导函数并赋给变量c
c( 1 ) --求出1的余弦
现在就拿这个sin(x)例子来说,先不考虑模板抽像化
众所周知,近似求函数f(x)的导函数,可以用公式 ( f(x+delta)-f(x) )/delta,为了方便起见,规定delta=1e-4,并且不考虑f(x)不可导的情况。
在C++中,如何建立一个函数,以给定的原函数为参数,返回一个导函数的指针,调用这个指针(并给一个参数x),就可以获得导数值。
例如我们给定sin函数,就应当得到cos函数,调用cos(x)就能得到相应的值。
PS:
如果没有说明白的话,可以看下面的例子。
对于lua语言,允许函数内定义函数,以及函数返回函数,实现方法是:
function df( f )
return function(x)
return ( f(x+delta)-f(x) )/delta
end
end
--假设我们已经定义了一个sin(x)函数
调用导函数方法如:
c=df( sin ) --求出正弦函数的导函数并赋给变量c
c( 1 ) --求出1的余弦
现在就拿这个sin(x)例子来说,先不考虑模板抽像化
typedef double (*f)(double);
//比如下面这个fun函数以函数指针s为参数 ,返回一个函数指针,
//这个指针指向一个,参数是1个double,返回值也是double的函数
double (*fun(f s))(double){
return s;
//如果就这样return ,相当于传入什么函数,就返回什么 比如我在主函数里 f d=fun(sin) ,d还是指向sin
//请问能做到像上面红字描述的那样吗?谢谢
}
}
...全文
相关推荐
函数指针与回调详解[代码]
本文详细解析了C语言中函数指针、指针函数与回调函数的核心概念及实际应用。指针函数是返回指针类型的函数,常用于动态内存分配和字符串处理;函数指针是指向函数的变量,支持运行时多态和策略模式;回调函数通过函数指针实现,用于事件驱动和异步编程。文章通过丰富的代码示例展示了三者的定义方式、典型应用场景(如动态数组创建、排序算法定制、GUI事件处理等),并分析了它们的内存管理要点和相互关系。最后总结了指针函数、函数指针和回调函数在系统编程中的综合应用价值,强调了这些技术对构建模块化、可扩展软件架构的重要性。
函数指针和回调函数是C语言中的作用.docx
函数指针和回调函数是C语言中非常强大的特性,它们提供了高度的灵活性和动态性,尤其是在设计模块化和可扩展的软件系统时。 回调函数是在函数指针的基础上的概念延伸,指的是将一个函数作为参数传递给另一个函数,然后在适当的时候由后者调用前者。这在需要异步处理、事件处理或需要在外部定义函数逻辑的场景中非常有用。 例如,假设你正在编写一个排序函数,该函数可以接受不同的比较函数,以便实现灵活的排序逻辑:
数组指针和函数指针.c
C语言学习源码
编程语言-你想知道的编程语言(函数)
集成了当前主流编程语言的介绍,编程语言方方面面都有涉及。 本书仅仅是:函数部分。
C++实现二分法求连续一元函数根
主要为大家详细介绍了C++实现二分法求连续一元函数根,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


