Зная, что этот вызов:
pow(4);
создаст это сообщение об ошибке:
error: too few arguments to function ‘pow’
Я изучаю указатели на функции, и я удивился, увидев этот код ниже. Но почему?
#include<stdio.h>
#include<math.h>
void aux(double (*function)(), double n, double x);
int main(void)
{
aux(pow, 4, 2);
aux(sqrt, 4, 0);
return 0;
}
void aux(double (*function)(double), double n, double x)
{
if(x == 0)
printf("\nsqrt(%.2f, %.2f): %f\n", n, x, (*function)(n));
else
printf("\npow(%.2f, %.2f): %f\n", n, x, (*function)(n));
}
Я скомпилировал, используя:
gcc -Wall -Wextra -pedantic -Wconversion -o test test.c -lm
Результат:
pow(4.00, 2.00): 16.000000
sqrt(4.00, 0.00): 2.000000
Если я изменил третий параметр первого вызова aux
на 3, результат изменится на:
pow(4.00, 3.00): 64.000000
sqrt(4.00, 0.00): 2.000000
И еще один вопрос. Каков правильный способ объявления и использования указателей на функции в этом случае?