[Grundlagen der Datenstruktur] Zeiger auf Funktion


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) zuweisen p.

  • 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 Zeigervariablen p zugewiesen ist, die auf die Funktion zeigt (d. h. p = max), dann zeigt p auf die Funktion max 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 Zeigervariable maxpmax*pmax*p*p(a, b);

3. Zwei Möglichkeiten, Funktionen aufzurufen

  • Beispiel: Passen Sie die Funktion max an, um die größere der Ganzzahlen a und b 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); 

Guess you like

Origin blog.csdn.net/weixin_65334260/article/details/125732248