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

问题描述

为什么cout指针时我没有得到地址? 请参见下面的代码: 代码1:

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

给出了有意义的0x71fcc0。 但是看看当我使用cstyle字符串时会发生什么:

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

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

解决方法

那为什么不打印地址呢?

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

将指向char的指针插入字符流时,将生成指向的字符串,而不是地址。如果指向的字符串不是以null结尾的,则程序的行为是不确定的。

,

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

如果要打印地址,可以尝试以下操作:

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...