Funktionszeiger
Ein Funktionszeiger ist eine Zeigervariable, die auf eine Funktion zeigt.
Normalerweise zeigt die Zeigervariable, von der wir sprechen, auf eine Variable wie eine Ganzzahl, ein Zeichen oder ein Array, während ein Funktionszeiger auf eine Funktion zeigt.
Ein Funktionszeiger kann wie eine normale Funktion verwendet werden, um Funktionen aufzurufen und Parameter zu übergeben.
Deklaration des Funktionszeigertyps:
typedef int (*fun_ptr)(int,int); // 声明一个指向同样参数、返回值的函数指针类型
Beispiel
Das folgende Beispiel deklariert eine Funktionszeigervariable p, die auf die Funktion max zeigt:
Beispiel
Kompilieren und ausführen, das Ausgabeergebnis ist wie folgt:
请输入三个数字:1 2 3 最大的数字是: 3
Callback-Funktion
Funktionszeiger als Parameter einer Funktion
Eine Funktionszeigervariable kann als Parameter einer Funktion verwendet werden; eine Callback-Funktion ist eine Funktion, die über einen Funktionszeiger aufgerufen wird.
Einfach gesagt: Eine Callback-Funktion ist eine Funktion, die Sie implementieren und die während der Ausführung der Funktion eines anderen aufgerufen wird.
Das Folgende ist eine Erklärung des Zhihu-Autors Chang Xiling:
Sie gehen in ein Geschäft, um etwas zu kaufen, aber der gewünschte Artikel ist zufällig nicht vorrätig, also hinterlassen Sie dem Verkäufer Ihre Telefonnummer. Ein paar Tage später ist der Artikel vorrätig, und der Verkäufer ruft Sie an; nachdem Sie den Anruf erhalten haben, gehen Sie in das Geschäft, um den Artikel abzuholen. In diesem Beispiel wird Ihre Telefonnummer als Callback-Funktion bezeichnet, das Hinterlassen Ihrer Telefonnummer beim Verkäufer wird als Registrieren der Callback-Funktion bezeichnet, das spätere Eintreffen des Artikels im Lager wird als Auslösen des mit dem Callback zusammenhängenden Ereignisses bezeichnet, der Anruf des Verkäufers bei Ihnen wird als Aufrufen der Callback-Funktion bezeichnet, und dass Sie in das Geschäft gehen, um den Artikel abzuholen, wird als Reagieren auf das Callback-Ereignis bezeichnet.
Beispiel
Im Beispiel definiert diepopulate_array()Funktion drei Parameter, von denen der dritte ein Funktionszeiger ist; die Array-Werte werden durch diese Funktion gesetzt.
Im Beispiel haben wir eine Callback-Funktion definiertgetNextRandomValue()Sie gibt einen Zufallswert zurück und wird als Funktionszeiger an diepopulate_array()Funktion übergeben.
populate_array()ruft10die Callback-Funktion auf und weist den Rückgabewert der Callback-Funktion dem Array zu.
Beispiel
Kompilieren und ausführen, das Ausgabeergebnis ist wie folgt:
16807 282475249 1622650073 984943658 1144108930 470211272 101027544 1457850878 1458777923 2007237709Weitere Erweiterungen