带有C样式字符串的C++指针



为什么我在定制指针时没有得到地址?请参阅以下代码:代码1:

string s1 {"NAME"};
string *p1 {&s1};
cout<<p1; 

给出0x71fcc0,这是有意义的。但是看看当我使用cstyle=string:时会发生什么

char cstring1 [] {"NAME"};
char *cp2 = &cstring1[0];
cout<<cp2<<endl; 

在屏幕上打印NAME为什么不打印地址呢?

为什么不打印地址?

因为它是指向char的指针。当插入字符流时,指向字符的指针与其他指针的处理方式不同。

当指向char的指针插入到字符流中时,会生成指向的字符串,而不是地址。如果指向的字符串不是null终止的,则程序的行为是未定义的。

正如其他人所指出的,const char*被视为一个字符序列,而不是一个指针。

如果你想打印地址,你可以试试这个:

cout<< static_cast<void*>(cp2) <<endl; 

最新更新