Передача функции как аргумента другой функции без использования указателя

Рейтинг: 2Ответов: 1Опубликовано: 15.09.2014

В языке Си можно передать функцию в качестве аргумента другой функции, используя указатель на функцию. Мне попалось вот такое:

double dydx(double f(double), double x, double eps)
{
  return (f(x + eps * 0.5) + f(x – eps * 0.5)) / eps;
}

double power2(double x)
{
  return x * x + 2;
}

void main()
{
  printf("%lf", dydx(power2, 2.0, 1E-5));
}

Всё то же самое, что при использовании указателя на функцию, только без указателя. Программа работает (Borland C++ Builder 6). Но как? Там такой же механизм, как при использовании указателей или что-нибудь другое?

По определённым причинам мне нужно знать именно то, как это работает.

Ответы

▲ 2Принят

Фактически там используется указатель. Просто Вы обошлись без предварительного typedef, объявив, что Вы хотите получить, прямо в перечне параметров. Не уверен, что так, должно быть, можно, согласно стандарту, это надо смотреть, но если какие-то компиляторы это поддерживают - почему бы нет?