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.
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!