c++11 - 访问二维数组(整数和字符数组)
问题描述
请考虑以下代码:
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
我很困惑为什么整数和字符数组的输出存在差异。
解决方案
当您提供指针时,它将使用std::ostream& operator<<( const void* value );
重载并输出指向的地址value
。
不同之处在于这std::ostream& operator<<(std::ostream& os, const char* s)
是一种特殊情况,它将取消引用s
并输出char
s 直到\0
遇到 a 。只要\0
遇到不,它就会s
向前迈进。
推荐阅读
- apache-spark - PySpark 数据帧模式动态传递
- angular - API 请求说未找到
- python - 熊猫:适用于数据框中的所有列
- node.js - AWS elastic beanstalk Amazon Linux 2 (mutlcontainer docker) 的 docker-compose 中的全栈 nodejs(前端和后端)
- c++ - 可变形物体 SFML 上的笨拙运动
- python - 如何将保存模型与真实图像一起使用?
- fastapi - pydantic :重复验证器功能
- python - 自动售货机程序帮助(python)
- javascript - 从 array.map 中获取单个项目
- flutter - 单击颤动时使照片变大