Typedef für Funktionszeiger in C++

Muhammad Zohaib 12 Oktober 2023
  1. das Schlüsselwort typedef
  2. typedef mit Funktionszeiger
Typedef für Funktionszeiger in C++

Dieser Artikel erklärt den Zweck von typedef in C/C++. Wir werden weiter besprechen, wie wir typedef mit einem Funktionszeiger verwenden können und welche Vorteile es hat.

Lassen Sie uns zuerst typedef und seine übliche Verwendung diskutieren.

das Schlüsselwort typedef

typedef steht für Typdefinition. Wie der Name schon sagt, ist typedef eine Möglichkeit, einem bestehenden Datentyp, dem Typ einer Variablen, einen neuen Namen zuzuweisen.

Wenn Sie beispielsweise eine Integer-Variable speichern möchten, ist der Datentyp int. In ähnlicher Weise wird der Datentyp char oder string für ein Wort oder einen Satz verwendet.

#include <iostream>
#include <string>
using namespace std;

int main() {
  int a = 10;
  string greeting = "Hello!";
  return 0;
}

Mit Hilfe von typedef können Sie sich von den tatsächlich verwendeten Typen lösen und sich mehr auf die Idee konzentrieren, was eine Variable bedeuten soll. Das macht das Schreiben von sauberem Code einfacher, aber es macht auch das Bearbeiten Ihres Codes viel einfacher.

Wenn Sie beispielsweise nach einem Cricket-Match die Aussagen von drei verschiedenen Spielern aufzeichnen, kann typedef verwendet werden.

#include <iostream>
using namespace std;

int main() {
  typedef char* statement;
  statement PlayerA = "I played bad";
  statement PlayerB = "I played very well";
  statement PlayerC = " I could not get the chance to Bat";
  cout << "Player A said:" << PlayerA;
  return 0;
}

Im obigen Code ist char* ein Zeichenzeiger, auf den wir das Schlüsselwort typedef angewendet haben, um diesen Datentyp mit dem neuen Namen statement zu ändern. Dieser neue Alias ist in diesem Fall aussagekräftiger, da wir die Aussagen der Spieler aufzeichnen.

Daher verbessert die typedef die Lesbarkeit des Codes.

Der typedef kann auch mit Funktionszeigern verwendet werden. Bevor wir darauf eingehen, lassen Sie uns kurz Funktionszeiger vorstellen.

Funktionszeiger

In C++ sind Zeiger Variablen, die die Speicheradresse einer Variablen enthalten. Ähnlich ist ein Funktionszeiger ein Zeiger, der die Adresse einer Funktion enthält.

Ein Funktionszeiger kann mit folgendem Code deklariert werden:

int (*point_func)(int, int);

Im obigen Code ist point_func ein Zeiger, der auf eine Funktion zeigt, die zwei Integer-Variablen als Argumente und int als Rückgabetyp hat.

typedef mit Funktionszeiger

Die Syntax sieht für typedef mit einem Funktionszeiger etwas seltsam aus. Sie müssen nur das Schlüsselwort typedef an den Anfang der Deklaration des Funktionszeigers setzen.

typedef int (*point_func)(int, int);

Der obige Befehl bedeutet, dass Sie einen neuen Typ mit dem Namen point_func definiert haben (ein Funktionszeiger, der zwei int-Argumente akzeptiert und eine ganze Zahl zurückgibt, d. h. int (*) (int, int)). Jetzt können Sie diesen neuen Namen für die Deklaration von Zeigern verwenden.

Schauen wir uns folgendes Programmierbeispiel an:

#include <iostream>
using namespace std;

int abc(int x1, int x2) { return (x1 * x2); }
int main() {
  typedef int (*pair_func)(int, int);
  pair_func PairProduct;  // PairProduct is pointer of type pair_func
  PairProduct = &abc;  // PairProduct pointer holds the address of function abc
  int product = (*PairProduct)(20, 5);
  cout << "The product of the pair is: " << product;
  return 0;
}

Ausgang:

The product of the pair is: 100

Bis hierher ist klar, was typedef macht, wenn es vor dem Funktionszeiger verwendet wird. Die Funktion abc nimmt zwei Argumente und gibt ihr Produkt im obigen Code zurück.

In der Funktion main haben wir typedef verwendet, um einen neuen Namen für den Funktionszeiger zu definieren (d. h. pair_func). Dann haben wir das PairProduct vom Typ pair_func definiert und der Funktion abc die Adresse zugewiesen.

Danach haben wir die Funktion abc aufgerufen, indem wir den Zeiger PairProduct (einfachere Syntax) dereferenziert und zwei Argumente übergeben haben.