2011-10-28 6 views
-1
int main(int argc, char* argv[]) 
{ 
     int *pInt; 
     int iParam = 423425; 
     pInt = &iParam; 
     std::cout<<&pInt<<std::endl; 
     system("pause"); 
     return 0; 
} 

なぜ私は1250008のようなアドレスを得ていますか0x00000のようなものはありませんか?C++ボーランド変数のアドレス

+3

"好きではない0x00000"とはどういう意味ですか?なぜ16進数でないのか、それとも0でないのか? –

+0

なぜその16進数ではない – Hakon89

+0

asnwerは非常に簡単です - アドレスは単なる数値なので、デフォルトではC++は数字を10進数で表示します。ですから、答えの中で@Alsが指し示すように、あなたはI/Oマニピュレータを使う必要があります。 –

答えて

4

pIntが仮想メモリにあるアドレスを返します。
任意のアドレスを指定できます。コンパイラは、プロセスに割り当てられたアドレス空間の任意のアドレスにポインタを自由に置くことができます。

あなたはhexでアドレスを取得し、小数ではないことを意味する場合は、次のように使用I/O Manipulatorを実行する必要があります。あなたは声明のprintf(「%のX」、iParam)を実行した場合

std::cout << hex << &pInt << std::endl; 
0

、 iParamに格納された値は16進数に変換されて印刷されますが、0Xで開始されることはありません。同じシナリオが住所を印刷する場合も同じです。 0Xで始まらない。

関連する問題