首页 > 解决方案 > 访问二维数组(整数和字符数组)

问题描述

请考虑以下代码:

char arr[3][10]={"white","red","blue"};
cout<<arr[2];  //output 1
int brr[3][3]={1,2,3,4,5,6,7,8,9};
cout<<brr[2];  //output 2

cout<<*brr[2];

输出 1:白色,在解除引用时它给出 w 作为输出

输出2:十六进制地址(0x28.....)

输出 3:最后一行第一个元素 7

我很困惑为什么整数和字符数组的输出存在差异。

标签: c++11

解决方案


当您提供指针时,它将使用std::ostream& operator<<( const void* value );重载并输出指向的地址value

不同之处在于这std::ostream& operator<<(std::ostream& os, const char* s)是一种特殊情况,它将取消引用s并输出chars 直到\0遇到 a 。只要\0遇到不,它就会s向前迈进。


推荐阅读