字符数组[]奇怪的输出
char array[] weird output
char a[] = {'k','l','m'};
cout << a << endl;
int b[] = {1,2,3};
cout << b << endl;
我运行上面的c++代码,输出如下:
klm
0x22fe00
我观察到char是唯一具有这种行为的主类型。为什么会发生这种情况?char类型有什么特殊之处吗?
数组的名称通常求值为其第一个元素的地址。标准输出流将字符指针解释为字符串,并将数据打印为字符串。对于整数,没有这样的解释,所以您看到的是实际的指针值。
char[]
本质上是C和c++处理字符串的方式。operator<<
已经过载,char[]
需要输出char
数组的值。另一方面,数组本质上被视为指向其基元素的常量指针:
const int* p = &b[0];
因此,当执行cout << b << endl
时,实际上是打印出数组的基址。
相关文章:
- 使用递归输出数组
- C++ 输出数组中的最高元素
- 空指针(为缺少的输出数组调用的 create() 在 create,文件 /home/m/OpenCV/modules/
- C++ 为什么我会得到垃圾输出数组?
- C 默认如何输出数组
- 使用递归输出数组
- 从 VB6 调用的 C++ DLL 函数中的输出数组参数
- 递归函数,用于输出数组的最小数量
- 如何在 c++ 中水平输出数组
- 冒泡排序未正确排序或输出数组值
- 按相反顺序输出数组的元素
- 制作一个排列函数,输出数组中所有可能的排列
- OpenCV (c++)缝合器不写入输出数组
- 创建一个3x3x3阵列.用0到9之间的随机值填充.输出数组.找出3个最小值和3个最大值的输出
- 实现[B,C]=f(A)语法(函数f作用于具有两个或多个输出数组的数组)
- 双指针输出数组参数异常
- SWIG Python C++输出数组给出'unknown type'错误
- 以 XLL 为单位获取调用方定义的输出数组尺寸
- c++:如何从函数接收可变长度的输出数组
- 未定义的符号 输出数组 opencv fedora.