[英]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.