函数指针是C++中指向函数的指针变量,用于存储函数地址并调用函数,支持回调机制与动态调用。定义语法为“返回类型 (指针名)(参数列表)”,如int (funcPtr)(int, int);可指向符合签名的函数,通过赋值改变目标函数实现不同行为,常用于回调函数、函数表等场景,是理解STL函数对象与lambda表达式的基础。

在C++中,函数指针是指向函数的指针变量,它可以存储函数的地址,并通过该指针对函数进行调用。使用函数指针可以实现回调机制、动态选择函数执行等功能。
函数指针的基本定义语法
定义一个函数指针需要指定它所指向函数的返回类型和参数列表。语法如下:
返回类型 (*指针名)(参数列表);例如,定义一个指向返回int、接受两个int参数的函数的指针:
int (*funcPtr)(int, int);函数指针的使用示例
下面是一个完整的示例,演示如何定义、赋值和调用函数指针:
立即学习“C++免费学习笔记(深入)”;
#include iostream>using namespace std;
// 定义两个普通函数
int add(int a, int b) {
return a + b;
}
int multiply(int a, int b) {
return a * b;
}
int main() {
// 定义函数指针
int (*funcPtr)(int, int);
// 将函数指针指向 add 函数
funcPtr = &add; // & 可省略
cout zuojiankuohaophpcnzuojiankuohaophpcn "add(3, 4) = " zuojiankuohaophpcnzuojiankuohaophpcn funcPtr(3, 4) zuojiankuohaophpcnzuojiankuohaophpcn endl;
// 改变指针指向 multiply 函数
funcPtr = &multiply;
cout zuojiankuohaophpcnzuojiankuohaophpcn "multiply(3, 4) = " zuojiankuohaophpcnzuojiankuohaophpcn funcPtr(3, 4) zuojiankuohaophpcnzuojiankuohaophpcn endl;
return 0;
}
常见应用场景
函数指针常用于以下场景:
- 回调函数:将函数作为参数传递给其他函数,比如排序时自定义比较逻辑。
- 函数表(跳转表):用数组存储多个函数指针,实现多路分支调度。
- 类成员函数指针:虽然语法更复杂,但也可用于指向类的成员函数。
例如,使用函数指针作为回调:
void operation(int a, int b, int (*op)(int, int)) {cout }
// 调用
operation(5, 3, add); // 输出 8
operation(5, 3, multiply); // 输出 15
基本上就这些。掌握函数指针有助于理解更高级的C++机制,比如STL中的函数对象和lambda表达式,它们在底层也常与函数调用方式相关联。











