int add(int a, int b) { return a + b; }add() 函数的地址可以用函数名
add
或者&add
表示。返回值类型 (*函数指针名)(参数列表);例如,定义一个指向返回值类型为 int、参数列表为 (int, int) 的函数指针:
int (*functionPtr)(int, int);其中,functionPtr 就是函数指针的名称。注意,函数指针名两侧的括号不能省略,否则就变成了一个返回 int* 类型的函数声明。
functionPtr = &add或者更简洁地写成下面这种方式:
functionPtr = &add
#include <iostream> // 两个简单的函数 int add(int a, int b) { return a + b; } int multiply(int a, int b) { return a * b; } int main() { // 声明一个返回类型为int,接受两个int参数的函数指针 int (*functionPtr)(int, int); // 初始化函数指针 functionPtr = add; // 使用函数指针调用函数 int sum = functionPtr(2, 3); // 输出应为5 std::cout << "Sum: " << sum << std::endl; // 改变函数指针指向 functionPtr = multiply; // 再次使用函数指针调用函数 int product = functionPtr(2, 3); // 输出应为6 std::cout << "Product: " << product << std::endl; return 0; }运行结果为:
Sum: 5
Product: 6
#include <iostream> // 定义两个简单的函数 int add(int a, int b) { return a + b; } int multiply(int a, int b) { return a * b; } // 定义一个函数,它接受一个函数指针作为参数 void execute(int (*funcPtr)(int, int)) { int result = funcPtr(2, 3); std::cout << "Result: " << result << std::endl; } int main() { // 使用add函数作为参数调用execute std::cout << "Executing 'add' function:" << std::endl; execute(add); // 使用multiply函数作为参数调用execute std::cout << "Executing 'multiply' function:" << std::endl; execute(multiply); return 0; }输出结果为:
Executing 'add' function:
Result: 5
Executing 'multiply' function:
Result: 6
#include <iostream> // 两个简单的函数 int add(int a, int b) { return a + b; } int multiply(int a, int b) { return a * b; } // 一个函数,根据输入参数返回对应的函数指针 int (*selectFunction(char op))(int, int) { if (op == '+') { return add; } if (op == '*') { return multiply; } // 返回nullptr表示无效的操作符 return nullptr; } int main() { // 根据输入参数获取函数指针 int (*funcPtr)(int, int) = selectFunction('+'); // 使用函数指针 if (funcPtr != nullptr) { int result = funcPtr(3, 4); // 输出应为 7 std::cout << "Result: " << result << std::endl; } else { std::cout << "Invalid operator." << std::endl; } // 再次获取函数指针,这次使用乘法 funcPtr = selectFunction('*'); // 再次使用函数指针 if (funcPtr != nullptr) { int result = funcPtr(3, 4); // 输出应为 12 std::cout << "Result: " << result << std::endl; } else { std::cout << "Invalid operator." << std::endl; } return 0; }执行结果为:
Result: 7
Result: 12
int (*selectFunction(char op))(int, int)
的意义是:selectFunction 是接受一个 char 参数、返回值类型为 int (*)(int, int)
的函数。本文链接:http://task.lmcjl.com/news/7253.html