问题描述
为什么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;