C++函数式编程

将一个函数作为参数交给另一个函数的编程范式叫做函数式编程。

在C++中,函数也有自己的内存地址,即函数指针。

但是函数不像变量一样可以进行值传递,我们在将其作为函数进行传递时,需要传递它的地址。

函数要接收另一函数作为参数,就必须有一个形式参数用于接收函数指针变量作为参数。

int g(float (*f)(int),int a)
{
    return (*f)(a);
}

 在这个函数中,第一个参数需要一个返回值类型为float且有一个int类型参数的函数,第二个参数就是普通的int类型的值。

对这样一个函数g,因为第一个参数传入的是地址,它的第一个参数在被使用时,需要用到取值符*。

不同于传变量地址时需要用取值的做法,在调用上面这个g函数,并且将函数指针变量作为参数时,直接将函数名传入就可以了。如果我们希望将:

float sqrt_minus_one(int x)
{
   return sqrt(x)-1;
}

  作为参数,和变量number一起传给g,调用时则应该写:

g(sqrt_minus_one,number)

  将 sqrt_minus_one函数和变量a传入到了g后,形式参数float(*f)(int)接收了sqit_minus_one函数的地址,形式参数int a 接收了number的值。

原文地址:https://www.cnblogs.com/fuhang/p/8655819.html