C++指向函数的指针和返回指针的函数

函数指针

每一个函数在计算机内部都有存储单元,通过内存可以反问到这个函数,指针可以指向内存中的某一个位置,可以用指针指向函数的初始位置。

一般定义形式:数据类型(*指针)(参数表)
数据类型指的是函数返回的数据类型,右侧是参数表,指针指向函数的参数类型。

注意与返回指针的函数之间的区别:

  1. int(*p)(int) // 是一个指针,指向一个函数入口地址
  2. int* p(int) // 是一个名为p的函数,返回一个int型指针

函数指针可以把函数直接拿来调用

指针p可以指向任意一个函数


#include <iostream>

using namespace std;

int MaxValue(int x, int y) {
    return (x > y) ? x : y;
}

int MinValue(int x, int y) {
    return (x < y) ? x : y;
}

int Add(int x, int y) {
    return x + y;
}

// 函数指针对得到的参数进行处理
bool ProcessNum(int x, int y, int(*p)(int a, int b)) {
    cout << p(x, y) << endl;
    return true;
} 

int main() {
    int x = 10, y = 20;
    cout << ProcessNum(x, y, MaxValue) << endl;
    cout << ProcessNum(x, y, MinValue) << endl;
    cout << ProcessNum(x, y, Add) << endl;

    return 0;
}

输出结果:

20
1
10
1
30
1

猜你喜欢

转载自blog.csdn.net/wankcn/article/details/108175834