微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决具有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; 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。