【乱码】输出乱码,乱码“烫烫烫……”分析

源地址

 http://topic.csdn.net/u/20110628/16/61312566-c5b8-4b31-b910-b1cc57157992.html

 

输出的是隐藏了烫烫烫那部分,那系统调用a时,烫烫烫是否存在?

初始化变量的时候,系统开辟出的内存,系统究竟赋给它什么初值了?且这些初值究竟是以什么类型存放的。。。

 

1、在vs调试时,内存会用0cc来初始化,而0xcccc恰好是"烫"的编码

 

2、debug下,没有初始化的数据,编译器自动填充,填充的值正好输出显示为 烫。

release就未定义了。

'\0' 是字符串结束符

 

3、是因为你没有给你的字符串设置结束符,才会读到乱码的,比如

char a[100],你分配空间后,设置 a[100] = 0;想读到哪为止,就在这个位置后面写入结束符

 

4、cout类重载了针对char*类型的<<操作,输出的时候是根据字符'\0'判断字符结尾的,如果没有找到'\0'就一直往下输出,并不会考虑内存里的东西到底是什么,超出ascii定义的内容就以一些“乱码”输出(具体我也不知道是如何对应的。
对于char 数组来说,新开辟的内存如果没有经过初始化,内存里的值是不确定的,可能是上次程序运行遗留下来的值。常见的初始化操作包括memset()和char buf[1024]={0}

 

 

是因为你没有给你的字符串设置结束符,才会读到乱码的,比如

char a[100],你分配空间后,设置 a[100] = 0;想读到哪为止,就在这个位置后面写入结束符
是因为你没有给你的字符串设置结束符,才会读到乱码的,比如

char a[100],你分配空间后,设置 a[100] = 0;想读到哪为止,就在这个位置后面写入结束符


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值