当前位置:  开发笔记 > 编程语言 > 正文

为什么cout打印char数组与其他数组不同?

如何解决《为什么cout打印char数组与其他数组不同?》经验,为你挑选了1个好方法。

我正在使用C++来理解指针是如何工作的.我有这段代码使用数组,我只是用它来理解等价物如何与指针一起工作.

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".

我错过了什么或者我还没有学到这个?



1> Johannes Sch..:

这是运算符<<为了重载const void*而为const char*.你的char数组被转换为const char*并传递给那个重载,因为它比to更适合const void*.但是,int数组将转换const void*为该类型并传递给该版本.运算符<<的版本const void*只是输出地址.采用const char*实际的版本将其视为C字符串,并输出每个字符,直到终止空字符.如果您不想这样做,请在将char数组const void*传递给operator <<时将其明确转换为:

cout << static_cast(arr2) << endl;


@ rmp251:错过[这些](http://www.cplusplus.com/reference/ostream/ostream/operator-free/)?
推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有