您的位置:首页 > 其它

关于指针的一些笔记

2010-11-12 12:16 225 查看
1.内存地址

在计算机硬件系统的寄存器中,拥有大量的存储单元(以字节为单位)。为了便于管理,每一个存储单元都有唯一的编号,这个编号就是存储单元的“地址”。例如,对16位机,DOS环境下的应用程序,其代码段,数据段,堆栈段位于内存地址0x0000~0xffff之间640KB常规内存中。也就是说,程序中的变量对应于0x0000~0xffff范围内的某些存储单元。

2.变量的地址和变量的值

在程序中定义变量时,变量名标明数据在内存中的地址,在对程序进行编译,连接时由系统为每个变量名分配一个内存地址。在程序中,对变量的存取实际上是通过变量名找到相应的内存地址,然后从其存储单元中读取数据。声明类型的目的是告诉系统变量需要占用的存储单元数目,以便系统为变量分配存储单元。不同类型的数据在内存中所占的存储单元是不同的。例如:

int iX,iY;

float fZ;

计算机在内存中就为变量 iX和iY各分配两个字节,为fZ分配四个字节的存储单元。不妨设它们对应的内存首地址分别为2000H,2002H和2004H。

执行赋值语句:

iX=10;

iY=iX+2;

iZ=5.6;

对于变量iX,它的值等于10,而它在内存中的首地址是0x2000(占用地址为0x2000和0x2001的2个字节的存储单元)。所以,对于C语言中的任一变量iX,其值是它内存单元中的内容,它对应内存单元的起始地址0x2000,简称为变量iX的地址。

3.变量的指针

一个变量的首地址称为该变量的指针,记作&iX。即在变量名前加取地址运算符“&”。例如,变量iX的首地址是2000H,我们就说iX的指针是2000。

4.指针变量

专门用来存放变量首地址的变量称为指针变量。当指针变量中存放着另一个变量的地址时,就称这个指针变量指向那一变量。指针变量和一般变量既有联系也有区别。指针变量也是变量,具有变量的特征,在内存中也占用一定的存储单元,也有“地址”和“值”的概念。但指针变量的“值”不同于一般变量的“值”,指针变量的“值”是另一实体(变量,数组或函数等)的地址。

5变量的存取方式

直接访问:

在计算机内,对变量的访问其实是通过存储单元的地址进行的,比如,当机器执行语句 printf("%d",iX); 时,机器先找到变量iX的地址(设为前面提到的0x2000),然后将0x2000,0x2001这两个地址所对应的存储单元中的数据10(即变量iX的值)取出,然后再输出。一般对变量的存取操作都是通过这种访问方式进行的。

间接访问:

假设pX是整型指针变量,他被分配到0x2018,0x2019单元(指针变量也是变量,具有变量的特征,在内存中也占用一定的存储单元),其值可以通过赋值语句 “pX=&iX;” 得到。此时,指针变量pX的值就是变量iX在内存中的起始地址0x2000。

通过指针变量pX存取变量iX的值的过程如下:

首先找到指针变量pX的地址(0x2018,0x2019),取出其值0x2000(正好是变量iX的起始地址);然后从地址0x2000,0x2001中取出变量iX的值10.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: