这是如何运作的:
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 :(得分:0)
对于大多数指针类型,
cout << ptr;
打印指针值的实现定义表示,通常是十六进制格式的地址。但是对于char*
,operator<<()
被重载以将指针解释为指向0终止char
数组中第一个char
的指针,并将其打印为{{1}会的。
打印空指针指向的地址是无害的,在空指针之后解释从指向的位置开始的字节是未定义的行为,并且通常会导致分段错误。