函数指针

hacker_dvd / 2023-05-08 / 原文

C++中的函数指针是一个指向函数的指针变量,它可以用来调用函数,也可以作为函数的参数传递给其他函数。函数指针的语法格式为:

return_type (*pointer_name)(arg1_type, arg2_type, ...);

其中,return_type是函数的返回类型,pointer_name是函数指针的名称,arg1_type、arg2_type等是函数的参数类型。

以下是一个简单的例子,演示如何使用函数指针来调用一个函数:

#include <iostream>
using namespace std;

int add(int a, int b)
{
    return a + b;
}

int main()
{
    int (*func_ptr)(int, int);  // 定义一个函数指针
    func_ptr = add;             // 将函数指针指向函数add
    int sum = func_ptr(2, 3);   // 使用函数指针调用函数add
    cout << sum << endl;
    return 0;
}

在上面的例子中,我们定义了一个名为func_ptr的函数指针变量,它可以指向一个具有两个int类型参数和一个int类型返回值的函数。然后,我们将func_ptr指向了函数add,并使用函数指针调用了add函数。

另外,函数指针还可以作为函数的参数传递给其他函数,如下所示:

#include <iostream>
using namespace std;

int add(int a, int b)
{
    return a + b;
}

void print_sum(int (*func_ptr)(int, int), int a, int b)
{
    int sum = func_ptr(a, b);   // 使用函数指针调用函数add
    cout << "The sum is: " << sum << endl;
}

int main()
{
    print_sum(add, 2, 3);   // 将函数add和参数2、3传递给函数print_sum
    return 0;
}

在上面的例子中,我们定义了一个函数print_sum,它接受一个函数指针作为参数,以及两个int类型的参数。在print_sum函数中,我们使用函数指针调用了add函数,并输出了计算结果。在main函数中,我们将函数add和参数2、3传递给了print_sum函数。