字体
第(4/5)页
关灯
   存书签 书架管理 返回目录
。 内存单元的指针和内存单元的内容是两个不同的概念。 可以用一个通俗的例子来说明

    它们之间的关系。我们到银行去存取款时, 银行工作人员将根据我们的帐号去找我们的存

    款单, 找到之后在存单上写入存款、取款的金额。在这里,帐号就是存单的指针, 存款数

    是存单的内容。对于一个内存单元来说,单元的地址即为指针,其中存放的数据才是该单元

    的内容。在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指

    针变量的值就是某个内存单元的地址或称为某内存单元的指针。

    图中,设有字符变量 C,其内容为“K”(ASCII 码为十进制数 75),C 占用了 011A 号单元

    (地址用十六进数表示)。设有指针变量 P,内容为 011A,这种情况我们称为 P 指向变量 C,

    或说 P 是指向变量 C 的指针。

    严格地说,一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指

    针值,是变量。但常把指针变量简称为指针。为了避免混淆,我们中约定:“指针”是指地

    址,是常量,“指针变量”是指取值为地址的变量。定义指针的目的是为了通过指针去访问

    内存单元。

    既然指针变量的值是一个地址,那么这个地址不仅可以是变量的地址,也可以是其它数

    据结构的地址。在一个指针变量中存放一个数组或一个函数的首地址有何意义呢? 因为数

    组或函数都是连续存放的。通过访问指针变量取得了数组或函数的首地址,也就找到了该数

    组或函数。这样一来,凡是出现数组,函数的地方都可以用一个指针变量来表示,只要该指

    针变量中赋予数组或函数的首地址即可。这样做,将会使程序的概念十分清楚,程序本身也

    谭浩强      C 语言程序设计               2001 年 5 月 1 日

    精练,高效。在C语言中,一种数据类型或数据结构往往都占有一组连续的内存单元。 用

    “地址”这个概念并不能很好地描述一种数据类型或数据结构,而“指针”虽然实际上也是一

    个地址,但它却是一个数据结构的首地址,它是“指向”一个数据结构的,因而概念更为清

    楚,表示更为明确。 这也是引入“指针”概念的一个重要原因。

    10.2 变量的指针和指向变量的指针变量

    变量的指针就是变量的地址。存放变量地址的变量是指针变量。即在C语言中,允许用

    一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个变量的地

    址或称为某变量的指针。

    为了表示指针变量和它所指向的变量之间的关系,在程序中用“*”符号表示“指向”,

    例如,i_pointer 代表指针变量,而*i_pointer 是 i_pointer 所指向的变量。

    因此,下面两个语句作用相同:

    i=3;

    *i_pointer=3;

    第二个语句的含义是将 3 赋给指针变量 i_pointer 所指向的变量。

    10.2.1 定义一个指针变量

    对指针变量的定义包括三个内容:

    (1) 指针类型说明,即定义变量为一个指针变量;

    (2) 指针变量名;

    (3) 变量值(指针)
上一页 目录 下一页