我正在使用C++来理解指针如何工作。我有一段使用数组的代码,我只是用它来理解等价物如何与指针一起工作。为什么cout打印字符数组与其他数组不同?
int main() {
int arr[10] = {1,2,3};
char arr2[10] = {'c','i','a','o','\0'};
cout << arr << endl;
cout << arr2 << endl;
}
然而,当我运行此,arr
输出整数(如预期)的阵列的第一个元素的地址,但arr2
不输出字符的数组的第一个元件的地址;它实际上打印“ciao”。
什么是我失踪或我还没有学到这个?
根据[this](http://www.cplusplus.com/reference/ostream/ostream/operator%3C%3C/),它只会被void *重载。这是否意味着它能够确定指针是否指向字符,如果是,它会查找终端字符并打印字符串? (仍然有点难倒) – rmp251 2013-10-02 02:17:29
@ rmp251:错过[这些](http://www.cplusplus.com/reference/ostream/ostream/operator-free/)? – 2014-12-13 22:54:08