Heim  >  Artikel  >  Backend-Entwicklung  >  Warum gibt „cout“ das Zeichen anstelle der Adresse aus, wenn mit char-Zeigern gearbeitet wird?

Warum gibt „cout“ das Zeichen anstelle der Adresse aus, wenn mit char-Zeigern gearbeitet wird?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-04 04:52:02580Durchsuche

Why does `cout` print the character instead of the address when working with char pointers?

Verstehen des Zeichenzeigerdrucks mit cout

Beim Umgang mit Zeichenzeigern ist es wichtig zu verstehen, wie sie in verschiedenen Umgebungen gehandhabt werden. Während print() mit den Konvertierungsspezifizierern %u und %s die Kontrolle über das Drucken von Adressen oder Zeichenfolgen ermöglicht, entsteht die Herausforderung bei der Verwendung von cout.

Beachten Sie den folgenden Codeausschnitt:

<code class="cpp">char ch = 'a';
char *cptr = &ch;
cout << cptr << endl;

Hier: Die gewünschte Ausgabe ist die in cptr gespeicherte Adresse von ch. Allerdings tendiert cout standardmäßig dazu, cptr als reguläre Zeichenfolge zu behandeln und das Zeichen „a“ anstelle seiner Adresse auszugeben.

Das Druckdilemma lösen

Um dieses Problem zu beheben, müssen wir um cout zu zwingen, cptr als void-Zeiger und nicht als char-Zeiger zu interpretieren. Dadurch können wir den ostream&-Operator nutzen, der speziell leere Zeiger verarbeitet und deren Adressen ausgibt.

Um dies zu erreichen, können wir eine Umwandlung wie folgt verwenden:

<code class="cpp">cout << static_cast<void *>(cptr) << endl;</code>

Durch Umwandlung von cptr in a Leerer Zeiger, die Überladungsauflösung wählt den richtigen Operator aus, was zum gewünschten Adressdruck führt.

Das obige ist der detaillierte Inhalt vonWarum gibt „cout“ das Zeichen anstelle der Adresse aus, wenn mit char-Zeigern gearbeitet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn