0

我在理解数组的行为时遇到了问题......

对于下面的代码 -

int iarray[]={1,2,3,4};
cout<<iarray;
cout<<iarray[i];

我知道 iarray 将给出数组第一个元素的地址,而 iarray[i] 将给出第 i 个元素。

而对于以下代码

char carray[4]={'m','a','x'};
cout<<carray;
cout<<carray[i];

为什么第一条语句的输出是“max”,我期待第一个元素的地址,就像 int 数组一样。另外,我将如何获得第一个 char 数组元素的地址。

谢谢你!!

4

2 回答 2

6

因为你的 char 数组衰减为一个指向 char ( char *) 的指针,并且由于这种数据类型具有特殊意义(即它通常表示 C 字符串),所以标准流上的运算符被重载,因此当它们遇到 a 时char *,它们将处理它作为字符串并输出字符串的内容而不是指针。

改为使用std::cout << (void *)&carray[0];

于 2013-09-23T18:10:26.433 回答
0

可能是因为它被视为 char* (字符串)。在 C++ 中,char 数组也用于表示“像这样”的文本字符串。

于 2013-09-23T18:10:55.287 回答