C语言学习实践
摘要
本文将从C语言变量的本质,不同类型变量在内存中的存储方式,类型强制转换,格式输出4个方面阐述C语言初学阶段的一些问题。
关键词:内存存储,类型强制转换,反汇编
1. 变量
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。在诸如C语言等高级语言中,变量的使用屏蔽了数据的底层细节,使得高级语言程序员不必像汇编程序员那样关心数据与硬件之间的关系。为了探究C语言中变量在内存中的存储形式,可以借助反汇编查看汇编语言以及内存数据。
2. 变量在内存中的存储形式
在内存中,无论哪种数据类型的数据,都是以相应长度的二进制码存取。从内存取数据是,如果不按照定义数据类型的方式取数据,所取数据就会错误。
2.1 用反汇编查看变量内存数据
(1) 实验代码如下。在赋值部分打点后调试,转入反汇编。
(2) 在监视窗口查看变量的内存地址,并在内存窗口中查看数据。
整形变量_4ByteData的数据在以内存地址0x0023FA58起始的四个Byte中存放:【注意】 Intel处理器是小端机,数据高位在高地址,地位在地址。所存数据:4Bytes的十六进制数 0x12345678
单精度浮点型变量fl的数据在内存中的存储:
双精度浮点型变量df的数据在内存中的存储:
字符型变量ch的数据在内存中存储;
结论:
(1) 局部变量存储在函数栈中,且该栈向低地址生长,所以先定义的局部变
量在较高内存地址(比如_4ByteData在0x00