C++中字符变量以及字符数组的问题

来源:百度知道 编辑:UC知道 时间:2024/06/27 08:33:57
1 #include<iostream.h>
2 void main()
3 {
4 char a='m';
5 cout<<&a<<endl; //结果为何不显示字符变a的地址值?
6 cout<<a<<endl;
7 int b[5]={1,2,3,4,5};
8 cout<<b<<endl;
9 cout<<&b<<endl;
10 cout<<&b[1]<<endl;
11 char c[5]={'a','b','c','d'};
12 cout<<c<<endl;//为何该行输出的是全部数组元素,而第8行输出的确是首元素的地址值?
13 cout<<&c<<endl;
14 cout<<&c[1]<<endl; //为何该行输出的不是第1个元素的地址值,而是自第1个元素开始往后的字符串?
}
可以说的再具体些吗,谢谢各位。

使用&a,也就是char*指针,如果不强制转换成int,那么就会调用<<参数是char*的重载函数,所以输出的是字符,而不会调用参数是int的重载函数。<<是运算符重载,查看msdn上有详细的说明。

a是char,输出也是按char输出,要地址,cout<<(int)&a<<endl;

cout<<c<<endl;就是cout<<&c[0]<<endl;即从该地址开始,一直输出,直到'\0'为止,这里初始化的时候c[5]就是'\0'.

cout<<&c[1]<<endl;就是从第二和地址开始输出