2016-09-24 99 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'类型。 –