2 u011367236 u011367236 于 2016.09.07 22:52 提问

C++ 数组和指针疑惑,在C++中为什么cout<<数组名;输出的是整个数组?

如图所示,代码和GCC编译结果
请问为什么&str[0]和str输出的是整个字符数组而不是字符数组首地址?
请问数组名str应该即是字符数组首地址,为什么需要加上取址符&才能输出首地址值?
使用C语言编写输出的结果和自己理解的一样,为什么用c++输出结果和我的理解完全不同?求大神答疑~

4个回答

caozhy
caozhy   Ds   Rxr 2016.09.07 22:53
已采纳

cout对于char[]有重载,这是一个特例,只有字符串数组会输出整个数组,如果是int数组或者别的数组,则不会。

aaaeefv
aaaeefv   2016.09.07 23:16

当cout遇到字符的首地址时,会输出对应的字符,并且会不停的输出下一个字符,直到遇到NULL,才会停止

caozhy
caozhy   Ds   Rxr 2016.09.07 22:53

cout << (int)&str[0]
可以输出地址。

u011367236
u011367236 error: cast from ‘char*’ to ‘int’ loses precision [-fpermissive] std::cout<<"&str[0]="<<(int)&str[0]<<std::endl;
大约一年之前 回复
hijack00
hijack00   Rxr 2016.09.08 13:01

char []重载了operator <<

Csdn user default icon
上传中...
上传图片
插入图片