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 サイトの他の関連記事を参照してください。