Funktionszeiger in c

Funktionszeiger in c
Zeiger sind ein wichtiges Merkmal der C -Programmiersprache, die Ihnen die direkte Kontrolle des im Programm verwendeten Speichers für den Programmierer gibt. Funktionen sind gemeinsame Technik und Syntax in der C -Programmierung, um wiederverwendbare Codeblöcke zu erstellen und sie in verschiedenen Situationen aufzurufen. Dieses Linux -Tutorial beschreibt Funktionszeiger in der C -Programmiersprache.

Ein Funktionszeiger ist eine normale C -Zeigervariable, aber es zeigt eine Funktion. Dies ermöglicht schicke und dynamische Programme, die unter verschiedenen Umständen unterschiedliche Funktionen dynamisch auf der Grundlage der Funktion des Zeigers zu diesem Zeitpunkt aufrufen. Der Programmierer erstellt Logik, um den Wert des Zeigers aus unterschiedlichen Gründen auf verschiedene Funktionen zu ändern, und ruft auf, auf die jemals funktionieren. Zeigen wir dies mit einigen Beispielen.

Technische Übersicht

Wir werden die Syntax von Funktionszeiger abdecken. Es wird uns wissen, wie wir den Zeiger auf eine Funktion verweisen können. Mit anderen Worten, wie wir die Adresse der Funktion mit dem Zeiger speichern können. Wir werden auch die Deklaration und Referenz des Funktionszeigers und wie die Funktionszeiger verwendet werden, um die Funktion für die Zeigerfunktion zu erstellen.

Syntax

Die allgemeine Syntax für die Deklaration des Funktionszeigers lautet wie folgt:

$ Return -Funktionstyp (* Zeigername) (Datentyp AR_1, Datentyp arg_2)

Die Deklarationsmethode des Funktionszeigers entspricht der üblichen Funktionserklärung. Der einzige Unterschied im Funktionszeiger ist, wenn wir den Namen des Funktionszeigers deklarieren, verwenden wir das Symbol * und die Variable ist im Gegensatz zur normalen Funktion enthalten, bei der der Name ohne Verwendung eines Symbols damit deklariert wird. Deklarieren wir mit Hilfe eines hypothetischen Beispiels einen Dummy -Funktionszeiger. Deklarieren Sie zunächst jede Funktion mit der üblichen Methode, e.G., int func (int, int). Nach der Funktionserklärung Func, Wir werden jetzt einen Funktionszeiger als int deklarieren (*funcptr) (int, int);. Hier ist die allgemeine Syntax und Zuordnung einer Funktion zu einem Funktionszeiger:

// Funktionserklärung
int func (int, int);
// Funktion Zeigerdeklaration
int (*funcptr) (int, int);
// Funktion Zeigerzuweisung
funcptr = func;

Beispiel # 01

In diesem Beispiel werden wir eine Funktion namens erstellen Quadrat mit 2 Parametern für die Berechnung eines Rechtecks ​​für Len und Breite. [Len * Breite = Bereich]. Wir deklarieren dann einen Funktionszeiger und weisen die Adresse des Quadrat Funktion zum Funktionszeiger aufgerufen sp. Nachdem wir dynamische Benutzereingänge empfangen haben.

Im Körper der Funktion werden wir einfach die Multiplikation beider Variablen nehmen Len Und Breite um die zu berechnen Bereich des Rechtecks ​​und verlassen Sie die Funktion, die diesen Bereich zurückgibt. Die Implementierung der Beispiele wird im folgenden Snippet angezeigt:

#enthalten
Int Square (int len, int width)
int Area = Len * Breite;
Rückkehrbereich;

int main ()
int l, w, Bereich;
int (*sp) (int, int);
printf ("Länge und Breite eines Rechtecks ​​eingeben:");
scanf ("%d%d", & l, & w);
// Funktionsfunktion dem Funktionszeiger zuweisen
sp = quadratisch;
// Aufruffunktion Zeiger
Bereich = (*sp) (l, w);
printf ("Bereich des Rechtecks ​​= %d \ n", Fläche);
Rückkehr 0;
LinuxHint@: ~ $ ./func
Geben Sie Länge und Breite eines Rechtecks ​​ein: 10 4
Bereich des Rechtecks ​​= 40
LinuxHint@: ~ $

Wir haben die gleiche Benutzereingabe für beide Variablen L und W wie „5“ gegeben, da beide die Länge und Breite des Quadrats darstellen, die gleichwertig sind. Die Ausgabe hat das Wert von Wert 5 als die Fläche des Quadrats zurückgegeben.

Beispiel # 02

Mit Hilfe dieses Beispiels erstellen wir ein Array von Funktionszeiger, bei dem jedes Element des Arrays die Zeigerfunktion für verschiedene Funktionen speichert. Beispielsweise deklarieren wir die beiden normalen Funktionen der Subtraktion und die Zugabe mit dem Rückgabetyp mit zwei Funktionsparametern mit dem Ganzzahl -Datentyp. Dann werden wir eine Reihe von Funktionszeiger erklären und dann die beiden Array -Mitglieder mit unseren beiden Funktionen für Addition und Subtraktion initialisieren. Dann verwenden wir das Array der Zeigerfunktion mit dem Index des Array -Funktionszeigers e.G., "Arr [i]".

Die Additions- und Subtraktionsfunktionen verwenden die Lesewerte von initialisierten Variablen A Und B. Anschließend werden diese Ergebnisse angezeigt, indem wir die printf () -Methode aufrufen. Das folgende Ausschnitt zeigt das vollständige Programm für dieses Beispiel:

#enthalten
int addition (int a, int b)
Return a + b;
int subtraction (int a, int b)
Rückgabe a - b;
int main ()
int a, b;
int (*Funktion [2]) (int, int);
Funktion [0] = Addition;
Funktion [1] = Subtraktion;
printf ("zwei Werte eingeben:");
scanf (" %d %d", & a, & b);
int result = (*Funktion [0]) (a, b);
printf ("Addition (a+b) = %d \ n", Ergebnis);
Ergebnis = (*Funktion [1]) (a, b);
printf ("subtraction (a-b) = %d \ n", Ergebnis);
Rückkehr 0;
LinuxHint@: ~ $ ./func
Geben Sie zwei Werte ein: 33
11
Addition (a+b) = 44
Subtraktion (a-b) = 22
LinuxHint@: ~ $

Abschluss

Der Leitfaden enthält ein grundlegendes Beispiel und eine Erklärung von Funktionszeigern in der C -Sprache. Hinweis, um die Syntax zu ändern, wenn Sie die Parametermenge und den Datentyp ändern, sowie wenn Sie den Rückgabetyp der Funktion ändern, den der Funktionszeiger jeweils ändern muss, um sich zu ändern.