如果我们声明:
int i;
int *ptr1 = &i;
*ptr1=10;
cout << ptr1;
这里ptr1会给出地址。 但是:
char *ptr2;
ptr2="Priyesh";
cout << ptr2;
这里它将给出字符指针的内容。 为什么会有这样的差异?
答案 0 :(得分:5)
operator <<
专门针对char
指针进行了重载 - 假设如果您尝试打印char
指针,则实际上想要打印它指向的字符串。
如果您想以与任何其他指针相同的方式打印它,请先将其转换为void*
:
char *ptr2;
ptr2="Priyesh";
cout << static_cast<void*>(ptr2);
(或cout << (void*)ptr2;
)
答案 1 :(得分:0)
因为有operator<<
overload专门用const char*
参数将其打印为字符串。