C++中的字符数组

use*_*483 2 c++ string char

为什么,当我有以下代码时,我可以明确地说cout << a;,它会打印整个字符串,但是当我使用整数数组时,它会给我指针的地址?

char * a;
a=new char [5];
strcpy(a,"foo");
cout << a;
Run Code Online (Sandbox Code Playgroud)

jua*_*nza 10

std::ostream& operator<<具有不同参数类型的重载.传递a时char*,它将其视为以null结尾的字符串并打印字符.当传递指向其他内置类型的指针时,它会打印它们的地址.

您可以夹具事情得到std::cout通过将其输出一些垃圾一char*说是不是空结尾的字符串:

#include <iostream>

int main()
{
  char word[] = {'a', 'b', 'c'};
  int n = 42; // some non-zero data
  std::cout << word << std::endl;
}
Run Code Online (Sandbox Code Playgroud)