char a[6]="hello";
char b[5]={'t','e','s','t','\0'};
int c[]={1,2,3,4,5};
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
输出结果
hello
test
一串地址
为什么会有这种区别呢?
char *或者char []类型就默认以字符串形式输出
int []类型变量本质是这个数组的第一个元素的地址,所以输出的是地址
当然char *和char []也是地址,你要用printf("%x", a);
输出的一样是地址
char *
与int *
不一样罢了,这都是合理规定。
虽然都是<<
运算符重载,但是调用的函数不一样。char *
输出会有个专门的函数,逐字节输出内容。其它指针只能把地址打印出来了。