首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

在C++中,为什么直接输出char类型变量的地址为乱码?解决办法

2012-03-07 
在C++中,为什么直接输出char类型变量的地址为乱码?如下代码:#includeiostreamusingnamespacestdvoidmai

在C++中,为什么直接输出char类型变量的地址为乱码?
如下代码:
#include   <iostream>
using   namespace   std;

void   main()
{
void   *pt;
char   cc= 'c ';
int   x=0;

pt=&cc;
cout < < "&cc   =   " < <&cc < <endl;
cout < < "pt   =   &cc   =   " < <pt < <endl;

pt=&x;
cout < < "&x   =   " < <&x < <endl;
cout < < "pt   =   &x   =   " < <pt < <endl;
}

输出结果为:
&cc   =   c烫蘴
pt   =   &cc   =   0012FF78
&x   =   0012FF74
pt   =   &x   =   0012FF74

不明白的是:为什么第一行输出的cc的地址为乱码?而把这个地址赋值给一void类型的指针,则能正确输出其结果,若把它赋给一char类型的指针,再输出该指针值时,那么也显示乱码。在它下面,直接输出int类型变量的地址,则是正常的。
这是为什么呢?烦请高手帮忙解释解释。谢谢!!

[解决办法]
这很是因为程序把&cc当作一个字符串的首地址了,所以打印了一串乱码。
而int型是不会出现这种情况的。
[解决办法]
char x;
char* p = &x;因为这样合法,所以输出乱码正常.
被当成字符串了
[解决办法]
< < 运算符重载时候,当参数是 char* 的时候

cont就输出字符串

比如

char* p = "aaaaa ";

cout < <p < <endl;

输出aaaaa


char c;

&c 的类型就是 char* 了

所以cout就按字符传输出
[解决办法]
不要把C的字符串和C++中的string混淆
[解决办法]
这个你的搞清楚两点:
1、C/C++语法中输出字符串指针,就是输出字符串,也就是说输出一个char*的指针一定是输出一个字符串,而不会输出指针,其它的类型都不会这样,所以你把它转成void*就会输出地址。
2、你所说的string ss,它是一个string的对象,我刚才说了除了char*其它的都是输出指针,输出ss的地址,当然就是指针了。

热点排行