为什么这段代码是打印字符串而不是打印地址?

时间:2018-01-04 11:35:22

标签: c++

在此代码中,cout<<q<<endl;返回字符串&#34; mani&#34; ?. q包含第一个字符的地址&#39; m&#39;所以它应该打印地址而不是string.please说明。

int main(){
    char *q;
    char b[5]={'m','a','n','i'};
    q=&b[0];
    cout<<b<<endl;
    cout<<q<<endl;

1 个答案:

答案 0 :(得分:3)

std::coutconst char*有一个特殊的重载,它将内存输出为char的数组,从指向传递给下一个NUL终结符的指针开始(这是你要做的工作)确保适当的内存可用于此。)

如果要关闭此行为并输出指针地址,请使用强制转换:

std::cout << (const void*)b << endl;