C/C++整型数组与字符数组问题

如下,整型数组的数组名是数组首个元素的地址也是首地址整型数据一个一个存储,而字符数组的数组名显示的是字符串,字符串是地址嘛?字符数组不也是一个一个字符存储的嘛,那不就是说... 如下,整型数组的数组名是数组首个元素的地址 也是首地址整型数据一个一个存储, 而字符数组的数组名显示的是字符串,字符串是地址嘛?字符数组不也是一个一个字符存储的嘛,那不就是说字符数组的数组名应该是首个字符的地址,怎么会是字符串呢?表示不理解。。。 展开
 我来答
smallkhb
推荐于2016-03-23 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:88
采纳率:0%
帮助的人:77.8万
展开全部
cout这个对象的运算符被重载了好多个类型的版本,当它遇到char*的时候它就会认为这是一个字符串(即字符数组,并且最后有一个‘\0'做为结尾)来显示,而它遇到int的时候就会把这个int转换成字符串来进行输出,遇到int*的话就是把地址的值转换成字符串来显示。
这算是C/C++对char*这种类型指针的一个特殊处理吧,理论上它应该显示一个地址的值,但语言本身就这么规定了,毕竟字符串不是定长的,而其它数据类型是定长的。。。而显示字符串是很有必要的。
bhtzu
2014-09-11 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4232万
展开全部
字符型数组,在C语言中会当做字符串处理,这个是没错的。
而&d[0],在没有强制声明的情况下,虽然是一个内存地址,但因为是一个字符串“指针”的地址,因此会当做指针处理。
如果需要显示d的地址,你可以用<<(int)&d[0] 来显示,显示具体字符,不加地址符即可。
追问

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
seraph_sigil
2014-09-11 · TA获得超过4434个赞
知道小有建树答主
回答量:442
采纳率:75%
帮助的人:165万
展开全部
c++中的<<这个运算符已经被重载了,对于char*这样的指针,它就会尝试输出字符串。
如果你想看字符数组的首地址,必须用强制转换。如下:
cout << d << endl << (int) (&d[0]);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式