Die Ausrufung eines Zeiger in C ++

EIN verkohlen Variable in C ++ ist so konzipiert, ein ASCII-Zeichen zu halten, ein int eine ganze Zahl ist, und eine doppelt eine Fließkommazahl. In ähnlicher Weise wird eine Zeigervariable entworfen, um eine Speicheradresse zu halten. Sie deklarieren eine Zeigervariable durch ein Sternchen Hinzufügen (*) bis zum Ende des Typs des Objekts, das der Zeiger zeigt auf, wie im folgenden Beispiel:

char * pChar - // Zeiger auf einen characterint * pInt- // Zeiger auf einen int

Eine Zeigervariable, die sonst nicht initialisiert wurde enthält einen unbekannten Wert. Mit dem Et-Zeichen () Operator können Sie eine Zeigervariable mit der Adresse einer Variablen des gleichen Typs zu initialisieren:

char cSomeChar = 'a'-char * pChar-pChar = cSomeChar-

In diesem Code-Schnipsel, die Variable cSomeChar hat einige Adresse. Zum Argument willen, sagen, dass C ++ er die Adresse 0x1000 zugeordnet. (C ++ initialisiert auch diese Stelle mit dem Charakter 'ein'.) Die Variable pChar hat auch einen eigenen Standort, vielleicht 0x1004. Der Wert des Ausdrucks cSomeChar 0x1000 ist, und ihre Art ist verkohlen* (lesen # 147-Zeiger auf verkohlen# 148-).

So ist die Zuordnung in der dritten Zeile des Snippets Beispiel speichert den Wert 0x1000 in der Variablen pChar.

bild0.jpg

Nehmen Sie eine Minute, um wirklich die Beziehung zwischen der Figur zu verstehen und den drei Linien von C ++ Code im Code-Schnipsel. Die erste Erklärung sagt, # 147-gehen und ein 1-Byte-Stelle im Speicher zu finden, weisen Sie den Namen cSomeChar, und initialisieren es 'ein'.# 148- In diesem Beispiel nahm C ++ den Standort 0x1000.

Die nächste Zeile sagt, # 147-gehen und einen Ort groß genug finden die Adresse eines zu halten verkohlen Variable und weisen Sie ihm den Namen pChar.# 148- In diesem Beispiel C ++ zugewiesen pChar an den Ort 0x1004.

Die dritte Zeile sagt, # 147-zuweisen die Adresse cSomeChar (0x1000) der Variablen pChar.# 148- Die Figur stellt den Zustand des Programms nach diesen drei Aussagen.

# 147-Na und? # 148- Sie sagen. Hier kommt der wirklich interessante Teil, wie in der folgenden Gleichung gezeigt:

* PChar = 'B'-

Diese Zeile sagt, # 147-Speicher ein 'B' Bei der verkohlen Lage zeigte auf durch pChar.# 148- Dies wird in der folgenden Abbildung gezeigt. Zur Ausführung dieser Ausdruck, C ++ zuerst ruft den Wert gespeichert in pChar (Das wäre 0x1000). Er speichert dann das Zeichen 'B' an dieser Stelle.

image1.jpg

Das * wenn als binärer Operator Mittel verwendet # 147 multiplizieren 148-- #, wenn es als unärer Operator verwendet wird, * Mittel # 147 finden das Ding an von spitz. # 148- Ähnlich hat eine Bedeutung als binärer Operator, sondern als unärer Operator, es bedeutet, # 147 nehmen die Adresse # 148.

Also, was ist so spannend, dass? Schließlich könnte man den gleichen Effekt durch einfaches Zuweisen eines erreichen 'B' nach cSomeChar direkt:

cSomeChar = 'B'-

Warum durch den Zwischenschritt gehen seiner Adresse im Speicher abrufen? Da gibt es mehrere Probleme, die nur mit Zeigern gelöst werden können.

Menü