2011-10-28 112 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++ Borland地址

+3

你是什麼意思「不喜歡0x00000」?爲什麼它不是十六進制,或者它爲什麼不是0? –

+0

爲什麼它不是十六進制 – Hakon89

+0

然後asnwer很容易 - 因爲地址只是一個數字,默認情況下,c + +打印十進制數字。所以,你需要使用I/O操縱器,因爲@Als指出了答案。 –

回答

4

它向您返回pInt位於虛擬內存中的地址。
它可以是任何地址。編譯器可以自由地將指針放置在分配給進程的地址空間中的任何地址處。

如果你的意思是在hex獲得地址,而不是小數,你需要做的使用I/O Manipulator這樣的:

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

如果執行該語句的printf( 「%X」,IPARAM)存儲在iParam中的值被轉換爲十六進制並打印,但不會以0X開始。打印地址也是相同的情況。它不以0X開頭。