HOWTO · C++

Void-Zeiger in C++

In C und C++ ist der void-Zeiger ein Zeiger, der an keine eingebauten Datentypen gebunden ist; Vielmehr typisiert es den Datentyp, auf den es zeigt. Aus diesem Grund wird er auch als Allzweckzeiger bezeichnet. Die Funktionen malloc() und calloc() geben einen void-Zeiger zurück.

Dieser Artikel behandelt die Verwendung von void*-Zeigern in C++. Ein Beispielcode wird ebenfalls bereitgestellt, um seine Implementierung zu demonstrieren.

Implementieren Sie den void*-Zeiger in C++

Wir haben untersucht, dass der Zeiger denselben Datentyp haben sollte, auf den er zeigt, wie in der Zeigerdeklaration angegeben. Wenn wir einen Float-Zeiger deklarieren, kann er nicht auf andere Datentypen wie int, long oder string zeigen; es kann nur auf eine Variable vom Typ Float zeigen.

C/C++ hat eine Lösung entwickelt, um dieses Problem zu überwinden - den void*-Zeiger. Ein void*-Zeiger ist ein Allzweckzeiger, der ohne statische Zeigerdefinition auf jeden Datentyp zeigen kann.

Einem void*-Zeiger können Sie die Adresse eines beliebigen Datentyps zuweisen. Ebenso kann der void*-Zeiger jedem Datentyp von Zeigern zugewiesen werden, ohne sie explizit zu typisieren.

Syntax:

void *pointerName;
void *ptr;

Die Verwendung von void*-Zeigern in C++ hat zwei Hauptnachteile:

  1. Aufgrund der konkreten Größe ist eine Pointer-Arithmetik mit dem void*-Pointer in C++ nicht möglich.
  2. Sie können einen void*-Zeiger nicht dereferenzieren.

Größe des void*-Zeigers in C++

Die Größe des void*-Zeigers ist ähnlich der Größe des Zeigers des Zeichentyps in C++. Der Zeiger speichert die Speicheradresse, die auf einige Daten im Programm zeigt.

Dieser Zeiger in C++ hängt von Ihrer Computerplattform ab. Auf einer 32-Bit-Plattform benötigen Sie 4 Bytes oder 32 Bits, um die Speicheradressdaten zu speichern.

Die Funktion sizeof() kann die Grösse des Zeigers ermitteln.

Syntax:

void *ptr = NULL;  // void pointer
sizeof(ptr);

Beispielcode:

#include
#include

using namespace std;

int main() {
  void *ptr = NULL;  // void pointer
  int *p = NULL;     // integer pointer
  char *cp = NULL;   // character pointer
  float *fp = NULL;  // float pointer

  // size of pointers
  cout

Grund für die Verwendung von void*-Zeigern in C++-Programmen

Wir verwenden den void*-Zeiger in C++, um die Probleme beim Zuweisen separater Werte zu verschiedenen Datentypen in einem Programm zu überwinden. Der void*-Zeiger in C++ kann auf jeden Datentyp zeigen und diesen Datentyp ohne explizite Typumwandlung umwandeln.

Es hat keinen Rückgabewert. Ein void*-Zeiger kann auf ein int, float oder char zeigen und auf diesen spezifischen Datentyp umwandeln.

Es hilft Entwicklern beim Schreiben von Code und beim Reduzieren der Komplikationen eines Programms.