首页 新闻 会员 周边 捐助

字符数组没有赋给字符变量,为什么会输出字符数组的内容?

0
悬赏园豆:5 [已解决问题] 解决于 2018-04-27 19:24
char arr[3]={'a','b'};
char t='e';
cout<<t<<endl;      //输出:e
cout<<&t<<endl;  //输出:eab,为什么会有ab呢

这是什么情况,变量t跟arr没什么关系,为什么会输出arr的内容

wilikeit的主页 wilikeit | 初学一级 | 园豆:197
提问于:2018-04-27 16:22
< >
分享
最佳答案
0

首先,你对 << 操作符的使用是有问题的,请见 http://www.cplusplus.com/reference/ostream/ostream/operator-free/

你把一个 char 类型的地址传给 << 操作符,让它误以为你传入的是一个 char*,也就是一个 char 类型数组。然后,因为编译器的原因,把 t 跟 arr 在内存中按照 t,arr[0],arr[1],arr[2]来进行排列了。

所以,当你对 &t 使用 << 操作符的时候,它误以为你传入的是这样一个数组:['e', 'a', 'b', '\0']。

收获园豆:5
不如隐茶去 | 小虾三级 |园豆:559 | 2018-04-27 18:06

 原来如此,我是c++初学者,没想到这么快就入坑了

wilikeit | 园豆:197 (初学一级) | 2018-04-27 19:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册