Hallo und willkommen zurück.
Ich möchte in diesem Vortrag ein wenig über leere Zeiger sprechen.
Wir wissen, was nichtig ist, weil wir dieses Schlüsselwort verwendet
haben, wenn wir über Funktionen gesprochen haben.
Hauptsächlich, wenn wir keine Daten von einer Funktion zurückgeben möchten, verwenden
wir die Leere als Teil der Funktionssignatur. Was bedeutet es, wenn wir Vermeidungszeiger verwenden?
Nun, der Typname void bedeutet das Fehlen eines Typs.
Ein Zeiger vom Typ void star kann also die Adresse eines Datenelements eines beliebigen Typs enthalten,
sodass er sehr flexibel ist.
Wenn Sie nicht wissen, was Sie als Zeiger speichern werden, können Sie
Void Star sagen, ziemlich geschickt. Es wird normalerweise in Funktionen für Funktionsparameter verwendet.
Daher wird void star häufig als Parametertyp oder
Rückgabetyp mit
Funktionen verwendet, die typunabhängig mit Daten umgehen.
So können Sie zulassen, dass Ihre Funktion flexibler ist,
wenn leere Sternzeiger erforderlich sind.
Dies bedeutet im Grunde, dass Ihre
Funktion mehr als einen Variablentyp annehmen kann, außer dass
sie nicht vollständig flexibel ist, da Sie sie beim Dereferenzieren auf irgendeine Weise umwandeln müssen.
So kann jede Art von Zeiger als Wert vom Typ void, jeder Typ, weitergegeben werden.
Der Void-Zeiger weiß nicht, auf welchen Objekttyp er zeigt.
Sie können es also nicht direkt
dereferenzieren, und hier kommt der echte Schluckauf mit dem leeren Stern zusammen.
Es ist ideal für eine lange Flexibilität für verschiedene Datentypen, aber Sie können es
nur verwenden, wenn Sie den Datentyp kennen.
Sie müssen dem Zeiger also eine
explizite Umwandlung geben, wenn Sie ihn dereferenzieren.
Die Adresse einer Variablen vom Typ int kann in einer Zeigervariablen vom Typ
void gespeichert werden, da void star bedeutet, dass dort jeder Datentyp gespeichert werden kann.
Wenn Sie also auf den Intervallwert an der Adresse zugreifen
möchten, die im ungültigen Sternzeiger gespeichert ist, müssen Sie ihn zuerst in einen Zeiger
vom Typ int umwandeln.
In diesem Beispiel sehen wir, wie Sie den leeren Sternzeiger verwenden.
Wir haben drei Variablen definiert, eine Ganzzahl, einen Gleitkommawert und ein Zeichen.
Wir werden jetzt einen leeren Sternzeiger erstellen.
Da der Zeiger vom Typ void ist, können wir ihm die Adresse von
i zuweisen, die ein int ist. Wir können ihm die Adresse
von f zuweisen, das ein Float ist, und wir können ihm die Adresse von
Zeichen oder ch zuweisen, das ein Zeichen ist.
Das einzige Problem ist, wenn Sie dereferenzieren, müssen Sie diesen Typ kennen, aber Sie sehen hier immer noch den Vorteil.
Der Vorteil hierbei ist, dass wir nur einen Variablentyp erstellen
müssen und mehrere verschiedene Adressen darin speichern können.
Aber wann immer Sie es verwenden möchten, müssen Sie es in Stern verwenden.
Und Sie werden hier sehen, wenn wir die Daten ausdrucken, dass
der In-Stern den Zeiger wirft und ihn dann de-referenziert, der Stern außerhalb
der Int-Klammern dereferenziert. Das wird also den Wert
ausdrucken, auf den der v-Zeiger zeigt,
aber zuerst wird er in den richtigen Typ umgewandelt.
In allen drei dieser v Zeiger wird es für die Ameise ausgedruckt, die 10 ausdrucken wird.
Für den Schwimmer wird es 2 herausbringen. 34.
Und für das ch, char, wird es k ausdrucken.
Wir werden sehen, dass der void-Zeiger, wie gesagt, in
Rückgabetypen häufiger in Funktionsparametern verwendet wird.
Und das ist wirklich der Wert, wenn es darum geht,
einen leeren Sternzeiger in einer Deklaration zu
verwenden und viele verschiedene Datentypen zuzuweisen. Vielen Dank.