editor como emacs o " vi " para escribir el programa
Ver Más instrucciones
funciones Callback
1
Aprender a escribir código C con punteros a funciones . Punteros de función son como cualquier otro punteros en C, excepto que tienen la dirección de una función . El segmento de código siguiente es un ejemplo sencillo con punteros a funciones .
# Include int printHello () { printf ("Hola \\ n " ) ; } int printHi () { printf ( "Hola \\ n"); } int main (int argc, char * argv [ ] ) { //Declara un puntero a función int ( * p) ( void); //Apunte el puntero de función a la dirección de una función p = printHello ; p (); //Apunte el puntero de función a la dirección de otra función p = printHi ; p (); } Decida cuál es la función de devolución de llamada es apropiado para el programa . Por ejemplo , el segmento de código siguiente se comparan o bien dos números enteros o dos cadenas de caracteres en función del valor del tercer argumento llamado " opción . " Si se comparan dos números enteros , la función devuelve un valor de 1 si el primer número es mayor que el otro . Si se comparan dos cadenas de caracteres , la función devuelve un valor de 1 si la primera cadena de caracteres tiene más caracteres que el segundo . Int callback (void * a , void * b , int opcion ) { if ( option == 0 ) { int * c = (int *) a; int * d = (int *) b; regreso ( c * > * d ) ; } else if ( option == 1 ) { char * c = (char *) a; char * d = (char *) b; regreso ( strlen ( c ) > strlen ( d )); } } Llame a la función de devolución de llamada desde el código fuente . Supongamos que un algoritmo de burbuja especie está siendo escrito por un programador. Este algoritmo ordena los valores en una lista en orden decreciente . El siguiente segmento de código llama a la función callback llamada " función ", que va a hacer la comparación. BubbleSort int ( int * Valores , int len , int ( * func) (void * a , void * b , int c )) { int ( * p ) (void * m, void * n , int p ) ; int i, j; p = func ; for (i = 0 ; i < len; i + + ) { for (j = 0 , j < i , j + + ) { if ( p ( y valores [ ,"i ], y los valores de [j ] , 0 )) { int t = valores [ i] , valores [ ,"j ] = t; } } } } Llame a la función que invoca la devolución de llamada función del programa principal que requiere el resultado de la ordenación . Para el ejemplo de la burbuja - tipo , la función "main " llama a la función bubble -sort con la función de devolución de llamada especificado en el paso 2 . Int main (int argc, char * argv [ ] ) { int a [ 5 ] = { 4 , 2 , 5 , 9 , 1 } ; bubbleSort (a, 5 , devolución de llamada ) ; for (i = 0 ; i < 5 ; i + + ) { printf ("% d \\ n", a [i ] ) ; } }
2
3
[ i ] = valores [j] ;
valores
4
< p > int i ;