Son punteros a funciones. Es una forma de hacer que una función pueda hacer muchas cosas diferentes, dependiendo del método o función que se les pase.
Es una forma de hacer las cosas genéricas.
Sólo importante que la función o método que se le pase cómo parámetro coincida con la que se espera.
Un ejemplo en C:
#include <stdio.h>
int suma(int a, int b) {
return a + b;
}
int resta(int a, int b) {
return a - b;
}
int calcular(int (*funcion)(int, int), int a, int b) {
return funcion(a, b);
}
int main () {
int a = 3;
int b = 2;
printf("%d + %d = %d\n", a
, b
, calcular
(suma
, a
, b
)); printf("%d - %d = %d\n", a
, b
, calcular
(resta
, a
, b
)); }
Esto devuelve:
3 + 2 = 5
3 - 2 = 1