Artikelverzeichnis
- 1. Funktionszeiger
- 2. Zeigervariable, die auf eine Funktion zeigt
- 3. Zwei Möglichkeiten, Funktionen aufzurufen
- 4. Verwenden Sie Zeiger auf Funktionen als Funktionsparameter (Schlüsselpunkte)
- 5. Warum sollte die Zeigervariable, die auf die Funktion zeigt, als formaler Parameter der Funktion verwendet werden (Hervorhebung)?
1. Funktionszeiger
Zunächst einmalstellt der Funktionsname die Startadresse der Funktion dar. Beim Aufruf der Funktion erhält das Programm die Startadresse der Funktion aus dem Funktionsnamen. Und führen Sie den Code in der Funktion von dieser Adresse aus aus.Der Funktionsname ist der Zeiger der Funktion, also können wir Definieren Sie eine Zeigervariable, die auf die zu speichernde Funktion zeigt. Die Startadresse der Funktion, damit die Funktion, auf die die Variable zeigt, aufgerufen werden kann.
2. Zeigervariable, die auf eine Funktion zeigt
-
Definieren Sie eine Zeigervariable, die auf eine Funktion zeigt
返回值类型(* 指针变量名)(形参类型列表);
Beispiel:int(*p)(int, int);
, diese Codezeile definiert eine Zeigervariable, die auf eine ganzzahlige Rückgabe zeigen kann Wert und hat zwei Ganzzahlen. Zeigervariable vom Typ Parameterfunktionp
, jede Funktion, die eine Ganzzahl zurückgibt und zwei Ganzzahlparameter hat, kann ihre Adresse (d. h. ihren Funktionsnamen) zuweisenp
. -
Verwenden Sie eine Zeigervariable, die auf eine Funktion zeigt
Wenn Sie eine Zeigervariable verwenden, die auf eine Funktion zeigt, müssen Sie nur den Funktionsnamen der Zeigervariablen zuweisen, die auf die Funktion zeigt, weil Der Funktionsname ist die Funktionseingangsadresse.
Da die Zeigervariable, die auf die Funktion zeigt, die Adresse der Funktion speichert, zeigt die Zeigervariable auf die entsprechende Funktion. Beispielsweise heißt die Funktion, die den Maximalwert findet,max
. Wenn ihr Funktionsname der Zeigervariablenp
zugewiesen ist, die auf die Funktion zeigt (d. h.p = max
), dann zeigtp
auf die Funktionmax
und kann weggelassen werden kann, sodass es auch als vor . Es ist zu beachten, dass das speichert, dann ist die Adresse der Funktion(*p)(a, b);
=9> Funktion, da die Zeigervariablemax
p
max
*p
max
*p
*
p(a, b);
3. Zwei Möglichkeiten, Funktionen aufzurufen
- Beispiel: Passen Sie die Funktion
max
an, um die größere der Ganzzahlena
undb
zu finden und an die zurückzugeben main Passen Sie die Funktion an, ohne die Situation zu berücksichtigen, in der die beiden Zahlen gleich sind - Rufen Sie die Funktion nach Funktionsnamen auf
#include <stdio.h>
int max(int, int); // max函数的函数声明
int main()
{
int a, b;
printf("请输入两个整数:");
scanf("%d%d", &a, &b);
printf("两数中的较大者的值为%d\n", max(a, b));
return 0;
}
int max(int a, int b)
{
if (a > b)
return a;
else
return b;
}
- Aufrufen einer Funktion über eine Zeigervariable, die auf die Funktion zeigt
#include <stdio.h>
int max(int, int);