char arr[3]={'a','b'}; char t='e'; cout<<t<<endl; //输出:e cout<<&t<<endl; //输出:eab,为什么会有ab呢
这是什么情况,变量t跟arr没什么关系,为什么会输出arr的内容
首先,你对 << 操作符的使用是有问题的,请见 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']。
原来如此,我是c++初学者,没想到这么快就入坑了