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:
- Aufgrund der konkreten Größe ist eine Pointer-Arithmetik mit dem
void*-Pointer in C++ nicht möglich. - 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.