Char データ表示異常のアドレス
int、char、string のさまざまな型のデータ メンバーを持つクラスを含むプログラムでは、これらのデータ メンバーのアドレスを出力すると、予期しないことが判明します。 int と string のアドレスが表示される一方で、char データ メンバーのアドレスは空白で表示されます。
この問題を解決するには、char データ型の基になる表現を検討してください。 & 演算子を使用して char 変数のアドレスを取得すると、char へのポインタが取得されます。ただし、ストリーム挿入演算子 (<<) は、このポインタを C スタイルの NULL 終了文字列として解釈します。その結果、ポインタに関連付けられた文字列を出力しようとしますが、この場合は存在しません。
この動作を修正するには、static_cast を使用して char 変数のアドレスを void ポインタに明示的にキャストします。そうすることで、値を文字列ではなくアドレスとして解釈するようにストリーム挿入演算子に指示します。 "文字のアドレス:" << static_cast
さらに、クラス データ メンバーが public と宣言されると、興味深いことが起こります。 char 変数のアドレスが表示されますが、int 変数のアドレスと比較すると 8 バイトのオフセットがあります。
<p> ... int : something </p> .. .char : something_2<p> ... 文字列 : something_3<br>
以上がクラス内の Char メンバーのアドレスを印刷すると空白に見えることがあるのはなぜですか?また、空白ではないのに 8 バイトのオフセットがあるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。