A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© rla540 中级黑马   /  2012-12-18 22:13  /  1457 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 rla540 于 2012-12-18 22:17 编辑

前边准备工作我们已经准备得差不多了。海盗们让我拿起藏宝图一起来寻找宝藏吧!
根据宝藏图显示。基本数据类型港这里有各种各样的宝藏,有char,有short,有float,有int 等等哈哈真是物产丰富!这么多个好东东。他们在内存中占多大呢?废话少说,关门,放图:

哈哈很形象直观,对吧!计算机中存储数据的最小单位是位,1bit就是1位。一个位里只能存放一个数字---018个位放到一起就组成了一字节即1Byte字节是计算机数据计算机的基本单位1024Byte放到一起就组成了1KByte, 1024KB就是1M 1024M就是1G 1024G就是1T 1024T......
8bit = 1Byte;
1024Byte = 1KByte;
1024KB = 1M;
1024M = 1G;
1024G = 1T;
我们买的U盘阿,硬盘阿。明明买的是16G,为什么电脑上显示的就比这个数值小很多呢!奸商就是奸商,他们可不是按照上边的标准来卖容量的!
8bit = 1Byte;
1000Byte = 1KByte;
1000KB = 1M;
1000M = 1G;
1000G = 1T;
哈哈现在知道了吧!这样一算下来。容量越大。差值就会越大了!
Ok, F10一下,走,进入调试状态,
把各变量名添加到监视窗口,发现,各变量已经有了初值,数值类型被赋为00.0char被赋值为‘\0’也就是空字符。说明一进入到Main空间,编译器已经为我们把所有数据初始化了。而在CC++中我们没有给变量赋初值时,那么所有的数据中存放的都是以前这些空间中存放的垃圾值,编译器是不会帮我们把数值初始化的,所以C ,C++定义一个变量时一定要程序员手工进行初始化!如果不初始化,后果是很严重的,比如说你为一个医疗器材编程,定义了一个未初始化的变量来给电压赋值。运气不好,测试时没有出现问题,当使用中哪个病人比较倒霉,这个变量中的垃圾值转换成很高的电压,那么拜你所赐,他就可以去见上帝去了!而C#语言中编译器已经帮我们把这事做了,不但他帮我们做了,而且还要让我们再做一遍。如你这样定义一个变量
int i;
Console.WriteLine(i);
编译器还是会提示我们,“错误      1     使用了未赋值的局部变量“i ”。因为他提供的0值未必就真是我们想要变量所应有的初始值。这就好像上了一个双保险!安全性自然也大大提高了!
再按一下F10
这时第一条语句会高亮显示!说明这条语句是将要执行但还没有被执行,再按一下F10观察监视窗口的变量值的变化
这时变量已经按照我们的意愿被赋了一个初值。
依次F10观察所有变量值的变化。
最后按住快捷键Sshift + F5 停止调试
根据藏宝图我们已经知道宝库中存放了具体数量的宝贝,那这些宝贝到底在哪个地方呢?内存这么大,简单是大海捞针阿!还记得阿里巴巴是怎么打开宝库大门的么?哈哈只要一句神奇的咒语“芝麻开门”就可以了!看来我们的藏宝图似乎也隐藏着什么玄机!幸运得是我是一个很有经验的船长阿!这自然难不倒我!学过C, C++的一定认识这个&符号吧!咦?他不是用于位与运算的么,没错,可别忘了,他还有一个重要的功能,获取变量的地址所以也叫取地址操作符。好按下F10 让我们在监视窗口把所有变量名前加上&,再看一看!
哈哈所有宝贝的准确位置暴露无遗!真是太神奇啦
好了位置找到了,开始挖吧!用鼠标点住监视窗口中的&chMax向左拖至内容查看窗口:










这下对这些基本数据类型有了个彻底的认识了吧。最后这个decimal变量最低4字节没有变化是因为我们赋给的值的最低4字节也是0所以根本不需要变化!最后我们再整体看下这几个变量在内存中存放的位置。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马