指针
在C语言中指针是一种非常强大的特性,在后来的C++中也保留了这其他语没有的独一无二的特性,
指针可以通过指向一个变量,然后通过指针去访问这个变量的地址,做一系列的操作。
函数指针
函数指针同样属于一种指针,函数也像普通变量一样需要占内存,那么就代表可以通过指针访问它,访问函数的指针就是函数指针
// 定义一个返回最大值的函数
int Max(int a, int b) {
return a > b ? a : b;
}
int main() {
// 定义一个函数指针
// 格式:返回值类型(*指针名)(参数列表)
// 就是把函数声明格式搬过来,然后把函数名Max的地方改为(*指针名fun)
// 函数声明格式对比 int Max(int, int);
int(*fun)(int, int);
// 让函数指针取Max函数的地址
fun = &Max;
//通过函数指针调用函数,和普通调用方法一样,函数指针(参数名)
cout << fun(3, 4) << endl;
system("pause");
return 1;
}
函数指针作为参数
// 使用类型定义把函数指针Fun定义为一个类型
typedef int(*Fun)(int, int);
//定义一个参数带有函数指针Fun类型参数的函数
int reMax(Fun f, int a, int b) {
// 通过函数指针Fun类型的参数f调用所指向的函数(这里指向的是下面传入的Max)
// 等同于c = Max(a,b)
int c = f(a, b);
return c;
}
int main() {
// 把上面函数Max作为参数传入
cout << reMax(Max, 1, 20) << endl;
// 最后输出结果是20
system("pause");
return 1;
}