char ポインタを扱うときに `cout` がアドレスではなく文字を出力するのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-04 04:52:02
オリジナル
579 人が閲覧しました

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

cout を使用した Char ポインターの印刷について理解する

char ポインターを扱う場合、さまざまな環境でそれらがどのように処理されるかを理解することが重要です。 %u および %s 変換指定子を指定した print() は、アドレスまたは文字列の出力を制御しますが、cout を使用するときに問題が発生します。

次のコード スニペットを考えてみましょう。

<code class="cpp">char ch = 'a';
char *cptr = &ch;
cout << cptr << endl;
ログイン後にコピー

ここでは、必要な出力は、cptr に保存されている ch のアドレスです。ただし、デフォルトでは、cout は cptr を通常の文字列として扱い、そのアドレスの代わりに文字 'a' を出力する傾向があります。

印刷のジレンマを解決する

この問題を修正するには、次のことが必要です。 cout が cptr を char ポインターではなく void ポインターとして解釈するように強制します。これにより、特に void ポインターを処理し、そのアドレスを出力する ostream& 演算子を利用できるようになります。

これを実現するには、次のようにキャストを利用できます。

<code class="cpp">cout << static_cast<void *>(cptr) << endl;</code>
ログイン後にコピー

cptr を a にキャストすることで、 void ポインターの場合、オーバーロード解決により正しい演算子が選択され、目的のアドレスが出力されます。

以上がchar ポインタを扱うときに `cout` がアドレスではなく文字を出力するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!