A puntero de función es , en esencia, un puntero a una función. En lenguajes como C + + , cada función y variable en un programa de ordenador existe como una dirección de memoria , y una variable pueden contener el valor de esa dirección . Eso variable puede ser pasado a una devolución de llamada , que luego puede llamar a la función que los puntos variables a . También se puede utilizar en un gestor de eventos , o para la unión tardía de una función miembro . Debido a su sintaxis complicada , punteros de función a menudo se evitan por los programadores , pero se pueden utilizar para llevar a cabo fácilmente muchas tareas de gran alcance . Cosas que necesitará
C + + compilador
Ver Más instrucciones
1
Escriba un programa en C + + . Este es el programa en el que va a utilizar un puntero de función .
2
Definir un puntero a función . Usted puede hacer esto de varias maneras . Declarar una función, como por ejemplo:
doSomething void ( int data) ;
y luego declarar un puntero a la misma. O bien, puede declarar una función como un puntero :
void ( * doSomething ) ( int) ;
Por último , se puede declarar un typedef , a continuación, crear una variable de ese tipo < br . >
typedef void (* voidTakingInt ) ( int) ;
ahora puede utilizar " voidTakingInt " como tipo :
doSomething void ( int data) ; voidTakingInt fun_ptr = & doSomething ;
Página 3
Declarar algo que utiliza el puntero de función . Esto suele ser algo que utiliza el puntero de función como una función de devolución de llamada , de modo que cuando se produce un evento específico , la función se ejecuta la función. Un ejemplo es una función de archivo de carga que tiene una función de devolución de llamada para indicar el progreso .
4
llamar a la función del puntero a él . Esto se hace desde dentro de la función que usted escribió que acepta un puntero de función como un parámetro :
doSomething void ( int data) { }
void callAnotherFunction (void (* otherFunction ) ( int) ) {
(* otherFunction ) ( 3 ) ;
}
int main (int argc, char * argv [ ] ) {
callAnotherFunction ( y doSomething ) ; return 0; }