-1

重複の可能性:
charデータのアドレスが表示されないのはなぜですか?

私はアンパサンド演算子を試していて、このプログラムで立ち往生しました:

#include<iostream>
using namespace std;

int main() {
    char i='a';
    cout<<&i;
    return 1;
}

変数iのアドレスを出力として期待していましたが、代わりに出力は変数i自体の値として取得されました。

誰かが今起こったことを説明できますか?よろしくお願いします。

4

1 に答える 1

4

これcout::operator<<は、のオーバーロードがあるためconst char*です。アドレスを印刷するには、明示的なキャストが必要です。

cout<<static_cast<void*>(&i);

void*これにより、アドレスの出力に使用されるパラメーターとしてオーバーロードが呼び出されます。

また、コードが未定義の動作に遭遇することにも注意してください。そこには文字が1つしかないため、オーバーロードではnullで終了するC文字列が必要です。

于 2012-12-09T15:23:25.833 に答える