2016-09-24 156 views
0
int main(){ 
    char a[] = "Ab"; 
    char *ptr = a; 
    //ptr = a; 
    cout << &a << a[0] << endl; 
    cout << ptr << endl; 

    char c= 'C'; 
    char *pC = &c; 
    cout << &c << " :: " << pC << endl; 
    cout << pC << endl; 
} 

輸出: 0x7fffcb399550A 抗體 駕駛室::駕駛室 駕駛室打印地址

無法理解過去的兩個輸出。

回答

0

&cpC都是指向單個字符的指針。

operator<<需要其char*類型的操作數是指向一個空終止字符串,即,到字符數組包含\0某處。

否則的行爲是undefined

+0

感謝您的回覆,但我又有一些困惑。爲什麼這種相同的行爲不適用於char a [] =「ab」。當我們嘗試打印&a時,操作符應該將操作數類型設置爲char *,然後它還應該打印字符串「ab」而不是地址。爲什麼&打印字符串開頭的地址,如果是char c ='C',&c打印字符'C'? – user3248678

+0

@ user3248678'&a'不是'char *'類型,因爲'a'不是'char'類型。 –