【面试刷题】——函数指针和指针函数

“函数指针”(function pointer)和 “指针函数”(pointer to function)是两个不同的概念,它们涉及到指针和函数的结合使用。

函数指针(Function Pointer):

函数指针是指向函数的指针变量。它可以用来存储函数的地址,以便在程序运行时动态调用不同的函数。函数指针的声明方式如下:

#include 

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

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

int main() {
    int (*funcPtr)(int, int); // 声明一个函数指针

    funcPtr = add; // 指向add函数
    std::cout << funcPtr(5, 3) << std::endl; // 调用add函数

    funcPtr = subtract; // 指向subtract函数
    std::cout << funcPtr(5, 3) << std::endl; // 调用subtract函数

    return 0;
}

这个示例中,funcPtr 是一个函数指针,它可以根据需要指向不同的函数,并通过调用函数指针来调用相应的函数。

指针函数(Pointer to Function):

指针函数是一个返回指向函数的指针的函数。换句话说,它是一个函数,其返回类型是一个函数指针。指针函数的声明方式如下:

#include 

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

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

int (*getOperation(bool addition)) (int, int) {
    if (addition) {
        return add;
    } else {
        return subtract;
    }
}

int main() {
    int (*funcPtr)(int, int) = getOperation(true); // 使用指针函数获取函数指针
    std::cout << funcPtr(5, 3) << std::endl; // 调用add函数

    return 0;
}

在这个示例中,getOperation 是一个指针函数,它根据传入的参数返回不同的函数指针。

总结来说,函数指针是指向函数的指针变量,而指针函数是返回函数指针的函数。它们都是在C++中用于实现函数回调、策略模式和动态函数调用等高级编程技术的重要工具。

你可能感兴趣的:(面试刷题,C++,面试,c++)