Apuntadores
Int ( *compare ) ( int, int)
Esto le dice a bubble que espere un parametro que es un apuntador a una funcion querecibe dos parametros enteros y devuelve un resulatado entero. Se necesitan paréntesis alrededor de *compare debido a que * tiene menor precedencia que el paréntesis que encierra los parámetros de lafuncion. Si no se hubieran incluido los paréntesis, la declaración habria sido
Int *compare ( int, int)
Que declara una funcion que recibe dos enteros como parametros y le devuelve un apuntador a unentero. El parámetro correspondiente del prototipo de funcion de bubble es:
Int ( * ) ( int, int )
Observe que solo se han incluido los tipos pero con fines de documentacion, el programadorpuede incluir nombres que ignorara el compilador.
La funcion que se le pasa a bubble es llamada en una instrucción if como sigue
If (( *compare) (work[count], work[count+1] ) )
Asi como sedesreferencia un apuntador a una variable para acceder al valor de esta, se desreferencian los apuntadores a funciones para ejecutar dichas funciones. La llamada a la funcion podria haberse hecho sindesreferenciar al apuntador, como en:
If (*compare(work[count], work [count+1] ) )
Que utiliza el apuntador directamente como nombre de funcion. Preferimos el primer metodo donde la llamada auna funcion es a traves de un apuntador, pues explícitamente ilustra que compare es un apuntador a una funcion que se desreferencia para llamar la funcion. El segundo metodo para llamar a la funcion atravez de un apuntador da la apariencia de que compare de hecho es una funcion. Esto puede confundir a algun usuario del programa que quisiera ver la definición de la funcion compare y descubrieraque no se defi nkio en ninguna parte del archivo.
Uno de los usos de los apuntadores a funciones es en los sistemas operados por menus. Al usuario se le solicita desde un menu que de una opcion (por...
Regístrate para leer el documento completo.