1.什么是函数指针?

函数指针是指向函数的指针,它存储函数的地址,可以通过这个指针调用函数。函数指针的主要用途包括回调机制、动态选择函数和提高程序灵活性。

2.函数指针的基本用法

声明函数指针

返回类型 (*指针名)(参数类型列表);

例如,声明一个指向返回 int 且接受两个 int 参数的函数指针:

int (*funcPtr)(int, int);

赋值函数地址

将函数的地址赋值给函数指针:

int add(int a, int b) {
    return a + b;
}
funcPtr = add; // 将函数地址赋值给指针

调用函数

通过函数指针调用函数:

int result = funcPtr(5, 3); // 等价于 add(5, 3)

示例代码

#include <iostream>
using namespace std;

// 定义两个函数
int add(int a, int b) {
    return a + b;
}

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

// 定义一个函数,接收函数指针作为参数
void operate(int x, int y, int (*operation)(int, int)) {
    cout << "Result: " << operation(x, y) << endl;
}

int main() {
    // 定义函数指针
    int (*funcPtr)(int, int) = nullptr;

    // 指向不同的函数
    funcPtr = add;
    cout << "Add: " << funcPtr(10, 5) << endl;

    funcPtr = subtract;
    cout << "Subtract: " << funcPtr(10, 5) << endl;

    // 使用函数指针作为参数
    operate(10, 5, add);
    operate(10, 5, subtract);

    return 0;
}

输出结果

Add: 15
Subtract: 5
Result: 15
Result: 5