你的C++为什么‘烫‘了,又为什么‘屯‘了? |
您所在的位置:网站首页 › 屯是什么意思怎么读 › 你的C++为什么‘烫‘了,又为什么‘屯‘了? |
你是不是有过这样的经历?写C/C++的时候,出现这种奇怪的字符串,比如出现如下字符 出现’烫’的时候,是你声明了一个char数组,但是没有赋值任何数据 char a[2];出现’屯’,是你声明了char指针,也没有给它任何数据 char * a = new char[2];并且,你还是用的编辑器是vs,还是debug模式,我说的对不对? 问题出现了,也知道怎么出现的,应该想想为什么出现’烫’,而没有出现’汤’,为什么出现"屯",没有出现”吨“ 好,开始说说为什么 准备工作:vs2015,win10 创建一个C++控制台程序,输入以下代码 #include "stdafx.h" int main(int ArgCount, char **Args) { char a[2]; return 0; }好了,准备完毕,开始 在上面代码第五行上打断点,F5跑起来,把鼠标放到a上,看看a的内存地址是什么 然后把vs工具栏:调试->窗口->内存->内存1,打开,然后把刚才得到的0x008ffea8地址,输入到地址栏里 为啥是cc呢?你又没有给它填充过cc 其实这个填充cc和编译器行为有关系,当声明一个数组还未初始化的时候,编译器会给你自动填充cc 正好,cccc在中文编码中,就是’烫’ 字。 同理,再看看指针声明,把数组改成指针 #include "stdafx.h" int main(int ArgCount, char **Args) { char * a = new char[2]; return 0; }现在内存中的内容是cd cd ,这同样也是编译程序自动填充的内容 就这样,就是这个意思,出现’烫’和’屯’,并非出现的乱码,内存中就是存的就是这些,所以,写程序的时候,定义完变量,最好给他填充一下,最简单的,如果是数组的话,给他赋值个花括号, char a[2] = {};如果是指针的话,用memset给他填充一下 memset(a, 0, 2); |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |