函数指针【简短介绍】

1. 函数指针是指针,该指针指向函数。

2. 普通的指针指向变量,函数指针指向函数。

3. 函数本质也是变量。

4. 函数指针可以传入其他函数的参数列表。

5. 我们使用sort函数自定义排序规则的时候经常使用函数指针:如下 

#include <iostream>
#include <algorithm>
using namespace std;
//自定义降序排序
bool cmp(int& a, int &b) {
    return a > b;
}
int main() {
    int arr[5] = { 2, 5, 4, 1, 3 };
    //将cmp函数传入sort函数的参数列表
    sort(arr, arr + 5, cmp);
    for (int i = 0; i < 5; i++) {
        cout << arr[i] << " ";
    }
    return 0;
}

6. 下面是一个解释函数指针用法的小案例。 

#include <iostream>
using namespace std;

int sum(int a, int b) {
  return a + b;
}

int maxv(int a, int b) {
  return a > b ? a : b;
}

int minv(int a, int b) {
  return a > b ? b : a;
}

void calc(int (*p) (int, int), int a, int b) {
  cout << p(a, b) << endl;
}

int main() {
  //创建函数指针
  int (*p) (int, int);
  int a = 10, b = 20;
  /*
   * 函数指针和普通的指针很相似。
   * 函数指针是指向函数的,普通指针是指向变量的。
   * 普通指针的创建方式是:int *p;
   * 函数指针的创建方式是:int (*p) (int, int);
   * 函数指针可以当作参数传入其他函数的参数列表。
   */

  p = sum;  //p = &sum; 也可以
  cout << "sum = " << p(a, b) << endl;

  // 将maxv函数作为参数传递到calc函数中
  calc(&maxv, a, b);

  // 为了美观,也可以省略minv前面的"&"符号
  calc(minv, a, b);

  system("pause");
  return 0;
}

7. 总结:函数就是变量,可以放入其他函数的参数列表。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值