8.6) Punteros a funciones.
     Dado que una función tiene una dirección de comienzo, su dirección puede asignarse a un puntero. Este puntero se podrá utilizar para invocar a la función. Una utilización muy frecuente de punteros a funciones, es cuando se elige una opción dentro de un grupo de opciones, por ejemplo desde un menú de pantalla. Si a cada selección le corresponde una función de tratamiento, las llamadas se podrían programar utilizando sentencias if anidadas o la sentencia switch, pero es mucho más cómodo y rápido el empleo de punteros a funciones.
     
     

     En general, la forma de declarar un puntero a una función es:
     

     
     
     
     

    donde:
     
     

      <identificador> es el nombre del puntero.

      <tipo> es el tipo que devuelve la función.

      <lista_argumentos> es la declaración de los parámetros que recibe la función.
       
       
       

     La llamada a la función tendrá la forma:
     
     
         


     Cuando una declaración de función aparece dentro de otra, el nombre de la función declarada convierte en un puntero a esa función. Así si una función llamada func1 se declara dentro de main( ), entonces proceso se interpretará como una variable puntero dentro de main( ). Tales punteros pueden pasarse a otras funciones como argumentos. Esto tiene el efecto de pasarle una función a otra, como si la primera función fuera una variable. La primera función puede ser accedida dentro de la segunda. Pueden hacerse llamadas sucesivas  a la segunda función pasándole diferentes punteros (diferentes funciones).
     
     
     

     Ejemplo: El poder de los punteros a funciones es que pueden variar sus resultados según el curso de la ejecución de un programa, en el problema que se muestra a continuación, según introduzcamos un carácter, u otro, la función, que será la misma en ambos casos, escogerá una opción u otra. (en los problemas resueltos mostramos un ejemplo típico de los punteros a funciones, el de un menú de pantalla).