Heim > Backend-Entwicklung > C++ > Hauptteil

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

Mary-Kate Olsen
Freigeben: 2024-11-04 04:52:02
Original
579 Leute haben es durchsucht

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;
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!