为什么此代码打印字符串而不是打印地址

Why this code is printing string rather than printing address?

本文关键字:打印 地址 字符串 代码 为什么      更新时间:2023-10-16

在此代码中,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;