2013-01-15 113 views
-1

这是如何工作的:字符指针VS INT指针

int main() 
{ 
    int * ch = NULL; 
    cout<<"Hello"<<ch<<"World"<<endl;; 
    cout<<"Hello world1"<<endl; 
    return 0;` 
} 

而失败:

int main() 
{ 
    char * ch = NULL; 
    cout<<"Hello"<<ch<<"World"<<endl;; 
    cout<<"Hello world1"<<endl; 
    return 0;` 
} 

回答

0

对于大多数指针类型,

cout << ptr; 

打印的实现定义表示指针值,通常是十六进制格式的地址。但是对于char*operator<<()过载以将指针解释为指向第0位终止的char阵列中的第一个char,并将其打印为printf("%s", ptr);

打印一个空指针指向的地址是无害的,遵循一个空指针来解释从它指向的地方开始的字节是未定义的行为,并且通常会导致分段错误。