zla*_*ack 14 c pointers function-pointers
我明白我可以使用指针来实现功能.
有人可以解释为什么会使用它们,以及如何使用它们?简短的示例代码对我很有帮助.
Joy*_*tta 22
一个简单的例子是这样的:根据您的业务逻辑,您有一系列操作(函数).您有一个散列函数可以将输入问题减少到其中一个业务逻辑函数.一个干净的代码将有一个函数指针数组,你的程序将从输入推断出该数组的索引并调用它.
这是一个示例代码:
typedef void (*fn)(void) FNTYPE;
FNTYPE fn_arr[5];
fn_arr[0] = fun1; // fun1 is previously defined
fn_arr[1] = fun2;
...
void callMyFun(string inp) {
int idx = decideWhichFun(inp); // returns an int between 0 and 4
fn_arr[idx]();
}
Run Code Online (Sandbox Code Playgroud)
但当然,回调是最常见的用法.示例代码如下:
void doLengthyOperation(string inp, void (*callback)(string status)) {
// do the lengthy task
callback("finished");
}
void fnAfterLengthyTask(string status) {
cout << status << endl;
}
int main() {
doLengthyOperation(someinput, fnAfterLengthyTask);
}
Run Code Online (Sandbox Code Playgroud)