7.13 Punteros a funciones

Un puntero puede apuntar a código. La declaración es similar a esta:

void (*ptr_fun) (int,int);

En este caso se está declarando una variable, ptr_fun, que apunta a una función “void” que admite dos parámetros enteros.
Para tomar la dirección de una función, se escribe su nombre sin paréntesis ni parámetros.
Para llamar a una función apuntada por un puntero, se usa el nombre del puntero como si fuera una función.

int suma (int a, int b)
{
  return a+b;
}

int resta (int a, int b)
{
  return a-b;
}

// declaramos un puntero a funciones con dos parámetros
// enteros que devuelven un entero
int (*funcion) (int,int);


{
  ...
  funcion = suma;	   // ‘funcion’ apunta a ‘suma’
  x = funcion(4,3);  // x=suma(4,3)
  funcion = resta;   // ‘funcion’ apunta a ‘resta’
  x = funcion(4,3);  // x=resta(4,3)
}