<分区>
在此代码中,cout<<q<<endl;
正在返回字符串“mani”? q 包含第一个字符“m”的地址,因此它应该打印地址而不是字符串。请解释。
int main(){
char *q;
char b[5]={'m','a','n','i'};
q=&b[0];
cout<<b<<endl;
cout<<q<<endl;
标签 c++
<分区>
在此代码中,cout<<q<<endl;
正在返回字符串“mani”? q 包含第一个字符“m”的地址,因此它应该打印地址而不是字符串。请解释。
int main(){
char *q;
char b[5]={'m','a','n','i'};
q=&b[0];
cout<<b<<endl;
cout<<q<<endl;
最佳答案
std::cout
对 const char*
有一个特殊的重载,它将内存输出为一个 char
的数组,从指针传递到下一个 NUL 终止符(您的工作是确保有适当的内存可供使用)。
如果您想关闭此行为并输出指针地址,请使用强制转换:
std::cout << (const void*)b << endl;
关于c++ - 为什么这段代码打印的是字符串而不是地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48094402/