A -Funktion Zeiger ist im Grunde nur ein Zeiger auf eine Funktion . In Sprachen wie C + +, existiert jede Funktion und Variable in einem Computerprogramm als Speicher -Adresse und eine Variable kann den Wert dieser Adresse enthalten . Das Variable kann zu einem Rückruf, der dann rufen Sie die Funktion , dass die Variable auf weitergegeben werden. Es kann auch in einem Event-Manager verwendet werden, oder für die späte Bindung eines Mitglieds Funktion . Wegen ihrer komplizierten Syntax werden Funktionszeiger häufig von Programmierern vermieden , kann aber verwendet werden, um leicht zu erreichen viele mächtige Aufgaben werden. Was Sie brauchen
C + +-Compiler
anzeigen Weitere Anweisungen
1
schreiben C + + -Programm. Dies ist das Programm , in dem Sie eine Funktion Zeiger verwenden.
2
Definieren Sie eine Funktion Zeiger . Sie können diese eine von mehreren Möglichkeiten . Deklariert eine Funktion , wie zB:
nichtig doSomething (int data);
und später deklarieren einen Zeiger darauf . Oder Sie können eine Funktion als Zeiger deklarieren:
void (* doSomething ) ( int);
Schließlich können Sie deklarieren eine typedef , dann erstellen Sie eine Variable dieses Typs
typedef void (* voidTakingInt ) ( int);
Sie jetzt verwenden können, " voidTakingInt " als eine Art :
nichtig doSomething (int data); voidTakingInt fun_ptr = & doSomething ;
3
Declare etwas, das die Funktion Zeiger verwendet . Dies wird oft etwas, das die Funktion Zeiger verwendet als Callback-Funktion , so dass, wenn ein bestimmtes Ereignis eintritt , wird die Funktion Ihrer Funktion läuft sein . Ein Beispiel ist ein Datei -loading -Funktion, die eine Callback-Funktion braucht, um Fortschritte anzuzeigen.
4
Rufen Sie die Funktion aus dem Zeiger darauf . Dies würde innerhalb der Funktion, die Sie schrieb, dass eine Funktion übernimmt Zeiger als Parameter erfolgen:
nichtig doSomething (int data) { }
nichtig callAnotherFunction (void (* otherFunction ) (int) ) {
(* otherFunction ) (3) ; }
int main ( int argc , char * argv [ ] ) {
callAnotherFunction ( & doSomething ); return 0; }