我遇到了解数组行为的问题....
对于以下代码 -
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数组元素的地址。
谢谢!!
答案 0 :(得分:6)
因为char数组衰变为指向char(char *
)的指针,并且由于此数据类型具有特殊意义(即,它通常表示C字符串),标准流上的运算符会被重载,因此当他们遇到char *
时,他们会将其视为字符串并输出字符串的内容而不是指针。
改为使用std::cout << (void *)&carray[0];
。
答案 1 :(得分:0)
可能是因为它被视为char *(字符串)。 在C ++中,char数组也用于表示“像这样”的文本字符串。