2016-03-05 64 views
-1
#include<iostream> 
using namespace std; 
int main() 
{ 
int a; 
char *x; 
x = (char *) &a; 
a = 2; 
    cout<<"a"<<x<<"p"<<*x<<"d\n"; 
x[0] = 1; 
x[1] = 2; 
cout<<a; 
return 0; 
} 

輸出任何人都可以解釋基於指針的這個程序的輸出?

APD

這個問題是一個在geeksforgeeks.org的修飾形式。第二份印刷聲明背後的原因對我來說很清楚。我無法理解爲什麼x的值和地址是空白的。 注意:第二個輸出是機器相關的。它的值是513在一個小端機器

+0

什麼是sizeof(int)在你的系統中? –

+0

sizeof(int)是4字節 – user221478

回答

0

operator<<對於ostream超載爲const char*。它認爲指針收到一個指向空終止C字符串的指針並嘗試打印該字符串。如果您想要再次打印時,你需要將其轉換爲void *指針值,例如:

cout << static_cast<void*>(x) << endl; 

operator<<超載的char類型。它打印字符,而不是整數值。如果你想看到下面的實際整數值,你需要將char轉換爲另一種整數類型:

cout << static_cast<int>(*x) << endl; 
+0

嗨,謝謝:)。但我已經聲明它爲char * x而不是const char *值。 – user221478

+0

@ user221478'T'可以隱式轉換爲'const T' – bolov

+0

T在這種情況下意味着什麼? – user221478

相關問題