Zeiger auf eine Funktion

CCBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Ein Zeiger auf eine Funktion ist eine Möglichkeit, die Speicheradresse einer Funktion zu speichern, genauso wie eine Variable die Speicheradresse eines Werts speichert. Wenn eine Funktion über einen Zeiger aufgerufen wird, wird dies als Zeiger auf eine Funktion bezeichnet.

In diesem Lab werden wir ein C-Programm schreiben, um zu demonstrieren, wie ein Zeiger auf eine Funktion verwendet wird.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/FileHandlingGroup(["File Handling"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c(("C")) -.-> c/PointersandMemoryGroup(["Pointers and Memory"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c/PointersandMemoryGroup -.-> c/pointers("Pointers") c/PointersandMemoryGroup -.-> c/memory_address("Memory Address") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/FunctionsGroup -.-> c/function_parameters("Function Parameters") c/FileHandlingGroup -.-> c/write_to_files("Write To Files") c/FileHandlingGroup -.-> c/create_files("Create Files") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/pointers -.-> lab-123303{{"Zeiger auf eine Funktion"}} c/memory_address -.-> lab-123303{{"Zeiger auf eine Funktion"}} c/function_declaration -.-> lab-123303{{"Zeiger auf eine Funktion"}} c/function_parameters -.-> lab-123303{{"Zeiger auf eine Funktion"}} c/write_to_files -.-> lab-123303{{"Zeiger auf eine Funktion"}} c/create_files -.-> lab-123303{{"Zeiger auf eine Funktion"}} c/output -.-> lab-123303{{"Zeiger auf eine Funktion"}} end

Deklarieren und definieren der zu zeigenden Funktion

In diesem Schritt werden wir eine Funktion deklarieren und definieren, die zwei ganzzahlige Argumente akzeptiert und nichts zurückgibt.

#include<stdio.h>

void func(int a, int b)
{
    printf("\n\n a = %d \n", a);
    printf("\n\n b = %d \n", b);
}

Deklarieren eines Zeigers auf eine Funktion

In diesem Schritt werden wir einen Zeiger auf die Funktion deklarieren, die im Schritt 1 erstellt wurde. Die Syntax zum Deklarieren eines Zeigers auf eine Funktion ähnelt derjenigen zum Deklarieren eines Zeigers auf eine Variable, aber sie gibt die Parametertypen und den Rückgabetyp der zu zeigenden Funktion an.

// function pointer
void (*fptr)(int, int);

Speichern der Adresse der Funktion im Zeiger

In diesem Schritt werden wir die Adresse der Funktion, die im Schritt 1 erstellt wurde, im Zeiger speichern, der im Schritt 2 erstellt wurde.

// assign address to function pointer
fptr = func;

Rufen Sie die Funktion über den Zeiger auf

In diesem Schritt werden wir die Funktion, die wir im Schritt 1 erstellt haben, über den Zeiger auf die Funktion aufrufen, der im Schritt 2 erstellt wurde.

// function calling
func(2,3);
fptr(2,3);  // calling a function referring to pointer to a function

Schreiben Sie den vollständigen Code

Öffnen Sie die Datei main.c im Verzeichnis ~/project/.

#include<stdio.h>

void func(int a, int b)
{
    printf("\n\n a = %d \n", a);
    printf("\n\n b = %d \n", b);
}

int main()
{
    printf("\n\n\t\tLabEx - Best place to learn\n\n\n");

    // function pointer
    void (*fptr)(int, int);

    // assign address to function pointer
    fptr = func;

    // function calling
    func(2,3);
    fptr(2,3);  // calling a function referring to pointer to a function

    printf("\n\n\t\t\tCoding is Fun!\n\n\n");
    return 0;
}

Kompilieren und Ausführen des Codes

Um den Code zu kompilieren, öffnen Sie das Terminal und geben Sie den folgenden Befehl ein:

gcc main.c -o main

Um das Programm auszuführen, geben Sie den folgenden Befehl ein:

./main

Zusammenfassung

In diesem Lab haben wir gelernt, wie man in einem C-Programm einen Zeiger auf eine Funktion verwendet. Wir haben gesehen, wie man die zu zeigende Funktion deklarieren und definieren, wie man einen Zeiger auf eine Funktion deklarieren, wie man die Adresse der Funktion im Zeiger speichern und wie man die Funktion über den Zeiger aufrufen. Das Verwenden von Zeigern auf Funktionen kann es einfacher machen, komplexe Programme zu schreiben und zu verstehen.