c++中数组的名称代表数组第一个元素的地址,比如输出一个整形数组名称时,会得到这个整形数组第一个元素的地址。
但是当输出字符数组名称时,并不会得到这个字符数组的首地址,而是直接输出整个字符数组的内容;这是因为c++对操作符<<进行了重载,当参数为char*时,会输出char *指向的所有内容。
例一:
int main()
{
int x[] = {1,2,3};
cout<<x<<'\n'; //输出0012FF74
char s[3] = {'a','s'};
cout<<s<<'\n'; //输出as
return 0;
}
例二:
//重载<<
ostream& operator<<(ostream &output, char *s)
{
output<<s[0];
return output;
}
int main()
{
int x[] = {1,2,3};
cout<<x<<'\n'; //输出0012FF74
char s[3] = {'a','s'};
cout<<s<<'\n'; //输出a
return 0;
}