输出的是隐藏了烫烫烫那部分,那系统调用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;想读到哪为止,就在这个位置后面写入结束符