-1

这是如何工作的:

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;`
}
4

1 回答 1

0

对于大多数指针类型,

cout << ptr;

打印指针值的实现定义的表示,通常是十六进制格式的地址。但是对于char*operator<<()被重载以将指针解释为指向以char0 结尾的char数组中的第一个的指针,并像这样打印它printf("%s", ptr);

打印空指针指向的地址是无害的,在空指针之后解释从它指向的位置开始的字节是未定义的行为,并且通常会导致分段错误。

于 2013-01-15T21:15:10.470 回答