char array []奇怪的输出

时间:2015-07-08 13:52:11

标签: c++ arrays char output

char a[] = {'k','l','m'};
cout << a << endl;

int b[] = {1,2,3};
cout << b << endl;

我运行上面的C ++代码,这是输出:

klm
0x22fe00

我发现char是唯一具有此行为的主要类型。为什么会这样?是否有char类型的特色?

2 个答案:

答案 0 :(得分:1)

数组的名称通常会计算其第一个元素的地址。标准输出流将字符指针解释为字符串,并将数据打印为字符串。对于整数,没有这样的解释,所以你看到实际的指针值。

答案 1 :(得分:1)

char[]本质上是C和C ++如何处理字符串。已为operator<<重载了char[]以打印出char数组的值。另一方面,数组基本上被视为其基本元素的常量指针:

const int* p = &b[0];

因此,当您执行cout << b << endl时,实际上是在打印出阵列的基址。这就是你得到十六进制数的原因。