2016-11-19 153 views
-2

如果我沒有記錯的話,在類中,我發現設置一個指向數組的指針會設置指針來保存該數組的第一個元素的地址。指向char數組的指針會打印出數組元素而不是第一個元素的地址?

int main() { 
char str1[5] = {'j', 'h', 'i', 'o', '\0'}; 
cout << str1 << endl; 
char *a=str1; 
cout << a << endl; 
} 

但是,以下代碼打印出'jhio',而不是j的內存地址?這是爲什麼?

+0

'char *'的'operator <<'被重載以打印出指向的字符 –

回答

3

operator <<對於許多類型都是重載的。對於char *類型,它輸出指針指向的字符串。如果你想輸出存儲在指針的地址,你應該寫

cout << (void *)a << endl; 

cout << static_cast<void *>(a) << endl; 
0

STR1的類型退化爲char *,這是一個C風格的字符串即達同一呼叫cout << "hello world"

0
char str1[5] = {'j', 'h', 'i', 'o', '\0'}; 
cout << str1 << endl; 
char *a=&str1[0]; 
cout << &a << endl; 
在COUT

運營商「< <」,這需要一個指針線

0

cout << a << endl;會打印出存儲在該目標中值的開始。如果你想打印指針的地址,你可以使用&,這是在傳遞引用中經常看到的,用來獲取指針的地址。這看起來像:cout << &a << endl;

相關問題