将函数作为参数传递的意义

XDP*_*mer 4 c++

我只是学习在c ++中传递一个作为参数的函数,但是我想知道它的意义是什么.

考虑这个例子,

#include <iostream>
using namespace std;

void argumentFunction(int x) {
      cout << x << " is the result.";
}

void myFunction(void (*functionparam) (int), char parameter[80]) {
    cout << parameter;
    (*functionparam)(1);
}

int main() {
    myFunction(&argumentFunction, "I am calling a function with a function.");      
    cin.ignore(80,'\n');
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么我需要将argumentFunction作为参数传递给myFunction,实际上我可以直接调用它而不传递它:

像这样:

#include <iostream>
using namespace std;

void argumentFunction(int x) {
      cout << x << " is the result.";
}

void myFunction(char parameter[80]) {
    cout << parameter;
    argumentFunction(1);
}

int main() {
    myFunction( "I am calling a function with a function.");        
    cin.ignore(80,'\n');
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

jan*_*ler 7

一个例子是C标准库函数qsort,它具有签名:

void qsort(void *base, size_t nmemb, size_t size,
    int (*compar)(const void *, const void *));
Run Code Online (Sandbox Code Playgroud)

这允许程序员将任意比较函数传递给现有的排序算法,而不必为每种需要完成的排序类型编写一个全新的排序函数.