C++输出字符串&字符问题

如图所见,想使用空指针输出字符串和字符的地址。字符串地址可以用void指针输出,字符也输出了地址但是为什么直接输出字符指针就会出现乱码?

看这句cout<<pch<<endl;
输出字符指针pch的数据时是把pch当作C风格字符串输出的,而C风格字符串是以'\0'标志结束的,而你的m='L'; *pch=&m; 只能说明pch指向的第一个字符是L,而L后面的字符是未定义的,就会一直输出直到遇到空字符'\0',于是就出现了你那样的情况,如果一直没有空字符出现的话,就会出现访问越界,程序就会异常结束。追问

好的!谢谢,那么如果cout *pch就是L么

追答

对,这种问题试一下不就知道了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-21
你用的编译工具是VC++6.0吧
这是个bug
不过微软已经解决了修复了这个bug

解决办法是
进入到VC++6.0的安装目录Microsoft Visual Studio\VC98\Include,找到名为string的文件,注意不是string.h,然后找到下面这段代码:
elseif (_Tr::eq((_E)_C,_D))
{_Chg = true;

_I.rdbuf()->snextc();

break;
}

把_I.rdbuf()->snextc();这一行注释掉,然后在它的下面添加一行:_I.rdbuf()->sbumpc();
重新启动VC++6.0即可。

图片上传了。

希望对您有所帮助
相似回答