📜  c++ 函数作为指针 - C++ (1)

📅  最后修改于: 2023-12-03 15:29:52.396000             🧑  作者: Mango

C++函数作为指针

在C++中,函数也可以被视为指针。这意味着您可以将函数作为参数传递给其他函数,也可以将函数作为返回值从函数返回。

语法

函数指针的语法类似于函数声明,只是需要将函数名用括号括起来并在前面加上星号。例如,以下是一个将两个整数相加的函数指针的声明:

int (*add)(int, int);

这个声明可以被解读为:“add是一个指向函数的指针,该函数接受两个整数参数并返回一个整数”。

使用

为了使用函数指针,您必须将函数的地址存储在指针中。这可以通过使用函数名来实现。例如:

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

int (*add_ptr)(int, int) = add;  // 将函数的地址存储在指针中

在这个例子中,我们声明了一个名为“add”的函数,该函数将两个整数相加并返回它们的和。然后,我们声明了一个指向函数的指针“add_ptr”,并将函数的地址存储在它里面。

现在,您可以使用函数指针来调用函数。例如,以下是使用上面示例中的函数指针来调用add函数的示例:

int result = add_ptr(3, 4);  // 调用函数指针

在这个示例中,我们使用函数指针“add_ptr”来调用add函数,并将结果存储在“result”变量中。

示例

以下是一个演示如何使用函数指针的程序:

#include <iostream>

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

int subtract(int a, int b) {
    return a - b;
}

int calculate(int (*operation)(int, int), int a, int b) {
    return operation(a, b);
}

int main() {
    int a = 5;
    int b = 3;
    
    int result = calculate(add, a, b);
    std::cout << "Addition: " << result << std::endl;
    
    result = calculate(subtract, a, b);
    std::cout << "Subtraction: " << result << std::endl;
    
    return 0;
}

在这个程序中,我们定义了两个函数“add”和“subtract”,它们分别执行加法和减法。然后,我们定义了一个函数“calculate”,它接受一个指向函数的指针作为参数,以及两个整数,它使用指向的函数来执行操作并返回结果。

在主函数中,我们声明了两个整数“a”和“b”,并使用函数指针调用“calculate”函数来执行加法和减法。然后,我们将结果输出到屏幕上。

通过此程序,我们可以看到如何使用函数指针来执行不同的操作,并将其作为参数传递给其他函数。

结论

函数指针是C++编程中非常有用的工具。它使您能够将函数作为参数传递给其他函数,并将函数作为返回值从函数返回。理解如何使用函数指针将为您打开许多代码设计和编程技巧的门。