Passando uma função como parâmetro para outra função em C

Fiquei agradavelmente surpreso por você poder fazer isso em C

float function1(float(*function2)(float parameter1))
{
float answer = function2(1.0);
return answer;
}

O que me diz que ainda há muito a aprender