Heim > Artikel > Backend-Entwicklung > Wie drucke ich Adressen mit Char-Zeigern mit „cout“?
Cout-Interpretation von Char-Zeigern
Im Gegensatz zu printf(), das spezifische Konvertierungsspezifizierer (%u oder %s) bietet, um zu bestimmen, ob dies der Fall ist Geben Sie eine Adresse oder die gesamte Zeichenfolge aus, auf die ein char-Zeiger zeigt. cout erfordert einen expliziten Ansatz für diese Unterscheidung.
Beispielproblem:
Bedenken Sie den folgenden Codeausschnitt:
<code class="cpp">int main() { char ch = 'a'; char *cptr = &ch; cout << cptr << endl; return 0; }
In diesem Beispiel interpretiert cout mit dem Standard-GNU-Compiler den char-Zeiger als eine Zeichenfolge im C-Stil und versucht, das Zeichen auszugeben, auf das cptr zeigt. Wenn jedoch stattdessen die Adresse von ch gedruckt werden soll, ist ein anderer Ansatz erforderlich.
Lösung:
So drucken Sie die Adresse von ch mit cptr mit cout ist eine explizite Typumwandlung erforderlich. Dies wird durch die Verwendung des static_cast<> erreicht. Operator, wie unten gezeigt:
<code class="cpp">cout << static_cast<void *>(cptr) << endl;</code>
Durch die explizite Umwandlung von cptr in void * wählt die Überladungsauflösung den entsprechenden ostream&-Operator aus, der einen void-Zeiger als Argument verwendet. Dadurch wird die Adresse von ch.
korrekt gedrucktDas obige ist der detaillierte Inhalt vonWie drucke ich Adressen mit Char-Zeigern mit „cout“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!