1
C语言程序设计
1.3.3.3 2.3.3 变量地址

2.3.3 变量地址

前面已讲述,在使用一个变量之前,先要对它进行定义,以便编译系统给其分配内存单元。也就是说,一个变量应该有一个名字,在内存中占据一定的存储单元,在该存储单元中存放变量的值。请注意区分变量名和变量值这两个不同的概念。例如:

int i;

float j;

i=100;

j=54.678;

img99

图2.3.1 变量在内存中的存放情况

经编译后它们在内存中的存放示意图如图2-3-1所示。

图中,右边是变量的名称;中间是变量的值,也就是内存单元的内容;左边是内存单元的编号,也就是内存单元的地址。

内存是以字节为单位的连续的存储空间,每个内存单元都有一个唯一的编号,这就是“内存地址”,它相当于宿舍楼中的房间号。根据内存地址可以准确地找到相应的内存单元。在地址所标志的内存单元中存放数据,这相当于在宿舍楼中各个房间中居住同学一样。

程序中不同数据类型的数据所占用的内存空间的大小是不相同的。例如,在Turbo C2.0环境中,int型量占用两个字节的内存单元,float型量占用4个字节的内存单元,char型量占用1个字节的内存单元。这样,经过C编译处理,把程序装入内存后,变量的名称就与内存中特定单元的地址联系在一起了。如图2.3.1所示,int型变量i占用2000和2001两个字节,在这两个字节中存放的值是整数100;float型变量j占用2002、2003、2004和2005四个字节,存放的值是浮点数54.678。

在执行程序时,对变量的访问是通过在机器内部的内存地址实现的。例如,i=100;其执行过程是:根据变量名与内存地址的映射关系,找到变量i的地址2000(通常都以起始地址作为标识),然后把整数100放入内存的起始地址为2000的两个字节中。变量的值就是相应内存单元中的内容。