“函数指针”(function pointer)和 “指针函数”(pointer to function)是两个不同的概念,它们涉及到指针和函数的结合使用。
函数指针是指向函数的指针变量。它可以用来存储函数的地址,以便在程序运行时动态调用不同的函数。函数指针的声明方式如下:
#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 是一个函数指针,它可以根据需要指向不同的函数,并通过调用函数指针来调用相应的函数。
指针函数是一个返回指向函数的指针的函数。换句话说,它是一个函数,其返回类型是一个函数指针。指针函数的声明方式如下:
#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++中用于实现函数回调、策略模式和动态函数调用等高级编程技术的重要工具。