函数指针
每一个函数在计算机内部都有存储单元,通过内存可以反问到这个函数,指针可以指向内存中的某一个位置,可以用指针指向函数的初始位置。
一般定义形式:数据类型(*指针)(参数表)
数据类型指的是函数返回的数据类型,右侧是参数表,指针指向函数的参数类型。
注意与返回指针的函数之间的区别:
- int(*p)(int) // 是一个指针,指向一个函数入口地址
- 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