функция как параметр vs указатель на функцию как параметр

Прослушивая курс Стэнфордского Programming Abstractions , я наткнулся на фрагмент кода, который выглядит следующим образом .

void plot(double start, double end, double (fn)(double)) {
    double i;
    for (i = start; i <= end; i += 1)
        printf("fn(%f) = %f\n", i, fn(i));
}

double plus1(double x) {
    return x + 1;
}

int main(void) {
    plot(1, 10, plus1);
    return 0;
}

Я скомпилировал код в своей системе с помощью GCC, затем G ++; они оба отлично бегают.

Я знаю, что передача int i = 2 в такую ​​функцию, как void func1 (int a) , создаст новую копию этого i для эта функция при передаче & i в void func2 (int * a) даст только функции func2 адрес i .

Может ли кто-нибудь объяснить мне, каков механизм передачи fn в plot и чем он отличается от передачи указателя функции в качестве параметра?

6
задан MrOrdinaire 4 February 2012 в 09:03
поделиться