函数指针作为参数

--------------------配置: mingw5 - CUI Debug, 编译器类型: MinGW--------------------


检查文件依赖性...
正在编译 C:\Users\nidhogg\Documents\C-Free\Temp\未命名1.cpp...
[Error] C:\Users\nidhogg\Documents\C-Free\Temp\未命名1.cpp:10: error: cannot convert `int*' to `int (*)(int)' for argument `1' to `void g(int (*)(int), int)'
[Error] C:\Users\nidhogg\Documents\C-Free\Temp\未命名1.cpp:14: error: new declaration `int f(int, int)'
[Error] C:\Users\nidhogg\Documents\C-Free\Temp\未命名1.cpp:2: error: ambiguates old declaration `int* f(int, int)'
[Error] C:\Users\nidhogg\Documents\C-Free\Temp\未命名1.cpp:19: error: `a' was not declared in this scope
[Error] C:\Users\nidhogg\Documents\C-Free\Temp\未命名1.cpp:19: error: `b' was not declared in this scope


构建中止 未命名1: 5 个错误, 0 个警告

### 将函数指针作为参数传递 在 C++ 中,可以通过多种方式将函数指针作为参数传递给其他函数。这允许实现更灵活的设计模式和回调机制。 #### 定义并声明带函数指针参数函数 为了接受一个函数指针作为参数,目标函数需要指定该指针所指向类型的签名。例如: ```cpp // 声明接收两个整数及其运算操作符(通过函数指针)的函数 int applyOperation(int a, int b, int (*operation)(int, int)) { return operation(a, b); } ``` 这里 `applyOperation` 接受三个参数:两个整数值以及一个名为 `operation` 的函数指针,后者应匹配 `(int, int)` 形式的原型[^1]。 #### 创建用于传递的实际函数 接下来定义具体执行某些计算逻辑的具体函数,这些函数将会被当作参数传入上述例子中的 `applyOperation` 函数内: ```cpp // 加法器函数 int add(int x, int y) { return x + y; } // 减法器函数 int subtract(int x, int y) { return x - y; } ``` 以上代码片段展示了两种简单的算术运算——加法与减法,并且每种都遵循了之前提到的形式参数列表[(int, int)]。 #### 使用带有函数指针参数函数 最后,在实际应用中调用此函数时只需简单地提供相应的实参即可完成整个过程: ```cpp #include <iostream> using namespace std; ... int main() { int resultAdd = applyOperation(5, 3, add); // 结果为8 int resultSubtract = applyOperation(5, 3, subtract); // 结果为2 cout << "Result of addition: " << resultAdd << endl; cout << "Result of subtraction: " << resultSubtract << endl; return 0; } ``` 这段完整的程序演示了如何创建、声明及使用含有函数指针形式参数的方法来动态选择不同的行为路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值