首页 理论教育C语言程序设计:变量存取通过地址

C语言程序设计:变量存取通过地址

【摘要】:程序在编译时将每一个变量名对应一个地址,在内存中不再出现变量名,而只有地址。对变量值的存取通过地址进行,访问方式通常有两种。直接利用变量地址进行存取。在例6.1 中,当系统执行输入语句scanf时,根据变量i 与地址的对应关系,找到变量i 的起始地址2011,然后把键盘输入的数值存入&i 所指示的单元中。变量i在内存中的地址和数值,如图6.1 所示。这里,指针变量只能存放地址,而不能存放其他数据。

程序在编译时将每一个变量名对应一个地址,在内存中不再出现变量名,而只有地址。对变量值的存取通过地址进行,访问方式通常有两种。

(1)直接利用变量地址进行存取。

在例6.1 中,当系统执行输入语句scanf(“%d”,&i)时,根据变量i 与地址的对应关系,找到变量i 的起始地址2011,然后把键盘输入的数值(10)存入&i 所指示的单元中。变量i在内存中的地址和数值,如图6.1 所示。

当系统执行输出语句printf(“i=%d”,i)时,根据变量i 找到对应的起始地址2011,从2011到2014 字节单元中取出其中的数据(10),输出到屏幕上。

这种通过变量名或地址访问一个变量的方式称为“直接访问”。(www.chuimin.cn)

(2)通过指针变量存取。

C 语言规定,可以把一个变量的地址存放到另一个变量中,这个变量称为指针变量。例如指针变量“i_pointer”的地址2019,取出其中的数值2011,即变量i 的起始地址,然后从地址2011 和2014 中取出变量i 的值10。其示意如图6.1 所示。

这里,指针变量只能存放地址,而不能存放其他数据。这种通过指针变量访问某一变量的方法称为“间接访问”。

举个例子,假设要打开A 保险柜,有两种方法:一是将A 保险柜钥匙带在身上,需要时用该钥匙打开A 保险柜,取出东西,这就是直接访问;另一种方法是将A 保险柜钥匙放到B保险柜中锁起来,需要时先拿B 钥匙打开B 保险柜,从中取出A 钥匙,再打开A 保险柜,取出东西,这就是间接访问。