指针知识(八):函数指针

c++允许对指向函数的指针进行操作。它的一个重要使用是把一个函数作为参数传给另一个函数。

声明一个函数指针像声明一个函数原型一样,不过函数名前面插个符号 * ,然后用()扩起来。

#include <iostream>

#include <string>

using namespace std

int addition (int a, int b)

{return (a + b) ;} 

int subtraction (int a, int b)

{return (a - b) ;}

int operation(int x, int y, int (*func)(int ,int))

{

  int g;

  g = (*func)(x, y);

  return g;

}

int main()

{

  int m, n;

  int (*mins)(int, int) = subtraction;

  m = operation(7, 5, addition);

  n = operation(20, m, mins);

  cout<<n<<' ';

 

  return 0;

}

输出:8

上面的例子中,mins是指向函数的指针,有两个 int 类型的参数,它被直接初始化指向 subtraction :

int (*mins)(int, int) = subtraction;

这里实际是在定义一个指针变量,这个指针的名字叫做mins,这个指针的类型是指向一个函数,函数的类型是有两个整型参数并返回一个整型值。

整句话 “int (*mins)(int, int) = subtraction;” 是定义了这样一个指针并把函数subtraction的值赋给它。也就是说有了这个定义后mins就代表了函数subtraction。

因此括号中的两个int 实际只是一种变量类型的声明,也就是说是一种形式参数而不是实际参数。



原文地址:https://www.cnblogs.com/guozqzzu/p/3599462.html