C/C++变量在内存中的存储
在C++语言中,有如下代码:
输出的结果是
请按任意键继续. . . 这里 int型是4Byte char型是1Byet。 a=‘1’ 这条语句执行后,会在内存中分配1个字节大小的内存空间,在这个 空间里存储的内容是0x 31,即字符1的ASC码的16进制表示。 b=1 这条语句执行后会在内存中分配一个4个字节大小的空间,在这个空间内存储的内容 是0x 00000001。 c= a ; a的长度小于c的长度因此赋值不会产生数据的丢失。 看如下代码:
输出结果是: a = 31 b = 31 请按任意键继续. . . 这里 a =49; 49 c++编译器默认为10进制,49的16进制表示为 0x31 那么在a所在的内存 中存放的依然是0x 31。 同理b在内存中存放的也是0x31。 看下面的代码:
输出的内容是: a = 31 b = 1 请按任意键继续. . . 这里b输出的是1,因为b是按照字符型来输出的。 通过以上3个例子要说明的是,要看淡变量类型,不要被过多的变量类型搞的晕头转向, 看问题要看本质。不同的变量类型反映在内存中,其实只是开辟的内存大小有区别甚至内存 大小都一样,关键还是要看内存空间存储的二进制码是什么。两个变量只要是在内存中存储 的二进制码一样 无论这两个变量是什么类型,我们都可以认为他们是相等的。 看如下代码:
输出结果如下:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |