Char数组给出了整个数组

时间:2013-09-23 18:07:07

标签: c++ arrays

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

对于以下代码 -

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数组元素的地址。

谢谢!!

2 个答案:

答案 0 :(得分:6)

因为char数组衰变为指向char(char *)的指针,并且由于此数据类型具有特殊意义(即,它通常表示C字符串),标准流上的运算符会被重载,因此当他们遇到char *时,他们会将其视为字符串并输出字符串的内容而不是指针。

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

答案 1 :(得分:0)

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