Dator
 |  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> C /C + + -programmering >> Content

    Hur man använder callback-funktion i C

    Återkallningsfunktioner finns avancerade funktioner i C programmeringsspråk. En callback-funktion hjälper till att isolera genomförandet av ett bibliotek funktion från den som ringer på biblioteket . Genom att göra det , kan biblioteket nu utvecklas självständigt utan någon kunskap om den ansökan som kommer att ringa biblioteket funktionen . Detta hjälper till att generera kompakt kod . Vidare bidrar den också i parallell utveckling , eftersom den person som skriver biblioteket behöver inte vänta på att den person som skriver ansökan , och vice versa . Saker du behöver
    AC kompilator som gcc
    Editor såsom emacs eller " vi " för att skriva Review Program
    Visa fler instruktioner
    återanropsfunktioner
    1

    Lär dig att skriva C-kod med funktionspekare . Funktion pekare är som alla andra pekare i C , förutom att de innehar en adress till en funktion . Kodsegmentet nedan är ett enkelt exempel med funktionspekare .

    # Include

    int PrintHello ( ) {

    printf ( " Hej \\ n " ) ;

    }

    int printHi ( ) {

    printf ( " Hej \\ n " ) ;

    }

    int main ( int argc , char * argv [ ] ) {

    //Deklarera en funktion

    pekare
    int ( * p ) ( void ) ;

    //Point funktionspekaren till adressen för en funktion

    p = PrintHello ;

    p ();

    //Point funktionspekaren till adressen för en annan funktion

    p = printHi ;

    p ( ) ;

    }
    2

    Bestäm vilken callback -funktion är lämplig för programmet . Till exempel , jämför följande kodsegmentet antingen två heltal eller två teckensträngar beroende på värdet av det tredje argumentet som kallas " alternativ. " Om två heltal som jämförs , returnerar funktionen ett värde av 1 om första siffran är större än den andra . Om två teckensträngar jämförs , returnerar funktionen ett värde av 1 , om den första teckensträng har fler tecken än det andra .
    Återuppringning

    int ( void * a , void * b , int option ) {

    om ( option == 0 ) {

    int * c = ( int * ) a ;

    int * d = ( int * ) b;

    avkastning ( * c > * d ) ;

    } else if ( option == 1 ) {

    char * c = ( char * ) a ,

    char * d = ( char * ) b;

    retur ( strlen ( c ) > strlen ( d ) ) ;

    }

    }
    3

    Ring callback-funktionen från källkoden . Antag att en bubbla - sort algoritm skrivs av en programmerare . Denna algoritm sorterar värdena i en lista i fallande ordning . Följande kod segmentet anropar callback-funktion som kallas " funk " som kommer att göra den jämförelsen .

    Int bubbleSort ( int * värden , 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 + + ) {

    för ( j = 0 ; j < i; j + + ) {

    om ( p ( & värden [ ,"I] och värderingar [J] , 0 ) ) {

    int t = värden [ i] ,

    värden [ i] = värden [ j ],

    värden [ ,"j ] = t ;

    }

    }

    }

    }
    4

    Anropa funktionen som anropar återuppringning funktion från huvudprogrammet som kräver resultatet av sorteringen . För bubble- sort exempel , kallar den "viktigaste " funktion bubblan - sorteringsfunktion med callback-funktionen angav i steg 2 .

    Int main ( int argc , char * argv [ ] ) {
    < p> int i;

    int a [ 5 ] = { 4 , 2 , 5 , 9 , 1 };

    bubbleSort (a, 5 , återuppringning );

    for (i = 0 ; i < 5 , i + + ) {

    printf ( " % d \\ n " , a [ i] ) ;

    }

    }
    Addera ditt

    Tidigare:

    nästa:
    relaterade artiklar
    ·Hur man gör matriser i C + +
    ·Hur Fäst Debugger i C #
    ·Hur man skapar ett datum i C #
    ·Hur att skapa program för Windows Mobile Net
    ·Hur man visar bilder i en Silverlight Datagrid
    ·Microsoft C + + Tutorials
    ·Hur man använder Visual C 6
    ·Konvertera LPSTR till INT
    ·Hur man tar Pekare till heltal i C + +
    ·Hur Pass ett Container Vector till en funktion
    Utvalda artiklarna
    ·Hur man kommer igång med Visual Basic 6
    ·Konvertera Infix till Postfix Använda Visual Basic
    ·Hur man gör fil Variabler i GNU
    ·Hur man redigerar en rad i GridView
    ·Hur man använder sessioner i MODx Revolution
    ·Hur man installerar Pygame Med Python 2.7 på en Mac
    ·Hur man beräknar en checksumma i VB
    ·Hur man öka storleken på grafik i Applets
    ·Konvertera PHP Array Index till Numbers
    ·Hur man använder PDF Xchange Viewer
    Copyright © Dator Kunskap http://www.dator.xyz