在此代码中,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;
答案 0 :(得分:3)
std::cout
对const char*
有一个特殊的重载,它将内存输出为char
的数组,从指向传递给下一个NUL终结符的指针开始(这是你要做的工作)确保适当的内存可用于此。)
如果要关闭此行为并输出指针地址,请使用强制转换:
std::cout << (const void*)b << endl;