ホームページ  >  記事  >  バックエンド開発  >  「cout」を使用して文字ポインタを含むアドレスを出力するにはどうすればよいですか?

「cout」を使用して文字ポインタを含むアドレスを出力するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-03 21:10:03860ブラウズ

How to Print Addresses with Char Pointers Using `cout`?

Char ポインターの Cout 解釈

printf() とは異なり、特定の変換指定子 (%u または %s) を使用して、 char ポインタが指すアドレスまたは文字列全体を出力する場合、cout ではこの区別のために明示的なアプローチが必要です。

問題例:

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

<code class="cpp">int main() {
  char ch = 'a';
  char *cptr = &ch;
  cout << cptr << endl;
  return 0;
}

この例では、デフォルトの GNU コンパイラを使用して、cout は char ポインタを C スタイルの文字列として解釈し、cptr が指す文字を出力しようとします。ただし、代わりに ch のアドレスを出力することが目的の場合は、別のアプローチが必要です。

解決策:

cout で cptr を使用して ch のアドレスを出力するには、明示的な型キャストが必要です。これは、static_cast<>を利用することで実現されます。

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

cptr を void * に明示的にキャストすることで、オーバーロード解決により、引数として void ポインターを取る適切な ostream& 演算子が選択されます。これにより、ch.

のアドレスが正しく出力されます。

以上が「cout」を使用して文字ポインタを含むアドレスを出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。