如何使用 C++ 函数指针传递和调用函数?

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

如何使用 C++ 函数指针传递和调用函数?

如何使用 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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月18日 00:27:06
下一篇 2025年12月18日 00:27:25

相关推荐

发表回复

登录后才能评论
关注微信