目录
函数指针是指向函数的指针,它保存了函数的地址,可以通过它调用指向的函数。函数指针在C++中具有多种用途,例如回调函数、动态函数调用以及实现多态等。
基本语法
函数指针的声明语法如下:
返回类型 (*指针名)(参数列表);
示例
- 声明和定义一个函数指针:
// 一个返回int,接受两个int参数的函数
int add(int a, int b) {
return a + b;
}
// 声明一个函数指针
int (*funcPtr)(int, int);
// 将函数指针指向函数add
funcPtr = add;
// 使用函数指针调用函数
int result = funcPtr(2, 3); // result == 5
- 使用typedef简化函数指针声明:
// 使用typedef定义函数指针类型
typedef int (*FuncPtrType)(int, int);
// 使用typedef定义函数指针变量
FuncPtrType funcPtr = add;
// 使用函数指针调用函数
int result = funcPtr(2, 3); // result == 5
常见用途
- 回调函数:
回调函数是指通过函数指针作为参数传递的函数,通常用于实现事件驱动的编程。
#include <iostream>
// 定义一个回调函数类型
typedef void (*CallbackFunc)(int);
// 一个执行操作并调用回调函数的函数
void performOperation(CallbackFunc callback, int value) {
// 执行一些操作
int result = value * 2;
// 调用回调函数
callback(result);
}
// 回调函数的实现
void myCallback(int result) {
std::cout << "Callback called with result: " << result << std::endl;
}
int main() {
// 使用回调函数
performOperation(myCallback, 5);
return 0;
}
- 动态函数调用:
函数指针可以用于在运行时选择和调用不同的函数,这在某些需要动态行为的场景下非常有用。
#include <iostream>
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int main() {
int (*operation)(int, int);
char op;
std::cout << "Enter operation (+ or -): ";
std::cin >> op;
if (op == '+') {
operation = add;
} else if (op == '-') {
operation = subtract;
}
int result = operation(10, 5);
std::cout << "Result: " << result << std::endl;
return 0;
}
注意事项
- 函数指针类型要匹配:
函数指针的类型必须与指向的函数类型完全匹配,包括返回类型和参数列表。 - 指针初始化:
在使用函数指针之前,应确保它已正确初始化,指向有效的函数地址,否则可能会导致未定义行为。
函数指针是C++中强大且灵活的特性,通过它可以实现许多高级编程技巧,提升代码的可复用性和灵活性。
标签:typedef,函数,int,C++,add,result,函数指针 From: https://www.cnblogs.com/keye/p/18279025