函数指针允许将函数作为参数传递,使函数调用更加灵活。您可以声明函数指针、传递参数,并通过指针运算符调用指向的函数。通过函数指针可以实现动态调度、排序算法选择等高级功能。

如何使用 C++ 函数指针传递和调用函数
函数指针是一种特殊类型的指针,它指向一个函数。函数指针使我们可以将函数作为参数传递给其他函数,从而实现更高层次的函数调用。
函数指针声明和初始化
立即学习“C++免费学习笔记(深入)”;
要声明函数指针,我们需要指定函数的返回类型和参数类型:
int (*func_ptr)(int, int);
上面代码声明了一个函数指针 func_ptr,它指向一个接收两个整数并返回一个整数的函数。
要初始化函数指针,我们可以使用函数名或函数指针:
func_ptr = my_function; // 使用函数名func_ptr = &my_function; // 使用函数指针
其中 my_function 是具有相应签名的函数。
传递函数指针
可以将函数指针作为参数传递给其他函数:
void call_function(int (*func)(int, int)) { int result = func(1, 2); // ...}
上面函数 call_function 接收一个函数指针 func,该函数指针指向一个接收两个整数并返回一个整数的函数。
调用函数指针
要调用通过函数指针指向的函数,我们需要使用指针运算符 (*):
int result = (*func_ptr)(1, 2); // 调用通过 func_ptr 指向的函数
实战案例
考虑以下使用函数指针排序数组的示例:
#include #include #include using namespace std;int compare(int a, int b) { return a > b;}bool greater_than(int a, int b) { return a > b;}int main() { vector arr = {1, 4, 2, 8, 5}; // 使用函数指针 compare 降序排序 sort(arr.begin(), arr.end(), compare); // 使用 lambda 表达式升序排序 sort(arr.begin(), arr.end(), [](int a, int b) { return a < b; }); // 使用 std::greater 升序排序 sort(arr.begin(), arr.end(), greater()); for (int i = 0; i < arr.size(); i++) { cout << arr[i] << " "; } return 0;}
在上面的示例中,我们定义了三个比较函数:
compare:降序比较函数greater_than:升序比较函数(使用函数指针)[](int a, int b) { return a :升序比较函数(使用 lambda 表达式)
函数 sort 采用函数指针作为参数,根据指定的比较函数对数组进行排序。该示例演示了如何使用函数指针在不同的排序算法之间轻松切换。
以上就是如何使用 C++ 函数指针传递和调用函数?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1447320.html
微信扫一扫
支付宝扫一扫