繁体   English   中英

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

[英]C++ pointer with c-style string

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

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

给出 0x71fcc0,这是有道理的。 但是看看当我使用 cstyle 字符串时会发生什么:

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

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

那么为什么它不打印地址呢?

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM