C ++指针和字符串寻址

时间:2015-12-30 06:11:47

标签: c++

如果我们声明:

int i; 
int *ptr1 = &i;
*ptr1=10;
cout << ptr1;

这里ptr1会给出地址。 但是:

char *ptr2;
ptr2="Priyesh";
cout << ptr2;

这里它将给出字符指针的内容。 为什么会有这样的差异?

2 个答案:

答案 0 :(得分:5)

operator <<专门针对char指针进行了重载 - 假设如果您尝试打印char指针,则实际上想要打印它指向的字符串。

如果您想以与任何其他指针相同的方式打印它,请先将其转换为void*

char *ptr2;
ptr2="Priyesh";
cout << static_cast<void*>(ptr2);

(或cout << (void*)ptr2;

答案 1 :(得分:0)

因为有operator<< overload专门用const char*参数将其打印为字符串。