指针是通过地址来访问变量的一种特殊的数据类型
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
指针
2006/9/1
集里中学: 徐 晨 辉
指针是通过地址来访问变量的一种特殊的数据 类型,属于动态的数据结构,它可以在需要时 产生,用完后则又可以取消或回收,以减少占 用的内存空间。指针变量与其他类型的变量不 同,它占有的不是数据,而是地址。
由于动态数据结构的变量是在程序执行过 程中动态生成的,所以不能预先予以说明,无 法预先给这些变量起名字,访问时也无法通过 名字直接输出或显示,而只能用指针得到其地 址,然后间接访问。
Biblioteka Baidu
为了节省内存空间,对于一些已经不使用的现有动 态变量,应该使用标准过程dispose予以释放。过程 形式为:dispose(指针变量名);为new(指针变量名) 的逆过程,其作用是释放由指针变量所指向的动态 变量的存储单元。例如在用了new(p)后在调用 dispose(p),则指针p所指向的动态变量被撤销,内 存空间还给系统,这时p的值为 nil。
说明:q是一指向整型存储单元的指针类型,其中“^”为指针 符。a,b,c均定义为指针变量,分别可以指向一个整型存储 单元。
上例也可用变量说明为: var a,b,c:^integer;
2、动态变量
应用一个指针指向的动态存储单元即动态变量的形式 如下:指针变量名^
例如:p^、q^、r^
以下语句把整数5存放到p所指向的动态变量p^中去: p^:=5;
new(指针变量名); 如果有下列变量定义语句:
var p: ^integer; 仅仅说明了p是一个指向整型变量单元的指针变量,但 这个整型单元并不存在,在指针变量p中还没有具体的地址 值。在程序中必须通过过程调用语句:new(p);才在内存中 分配了一个整型变量单元,并把这个单元的地址放在变量p 中,一个指针变量只能存放一个地址。在同一时间内一个指 针只能指向一个变量单元。当程序再次执行new(p)时,又在 内存中新建立了一个整型变量单元,并把新单元的地址存放 在p中,从而丢失了旧的变量单元的地址。
3、使用后及时收回存储单元 指针使用后,不会自动归还占用的存储空间,应及时
使用DISPOSE()过程来释放P^所占用的存储单元,以 免浪费有限的存储空间.
5、单链表
以下语句把p所指向的p^中的值赋给整型变量i: i:=p^;
如果指针变量p并未指向任何存储单元,则可用下列 赋值语句:
p:=nil; 其中nil是保留字,表示“空”,相当于C语言里面的n
3、对动态变量的操作
在Turob Pascal程序中,动态变量不能由var直接定义而是通 过调用标准过程new建立的。过程形式为:
1、定义指针类型
在Turbo Pascal中,指针变量用来存放某个存储单元的地址, 即指针变量指向某个存储单元。一个指针变量仅能指向某一
种类型的存储单元,这种数据类型是在指针类型的定义中确
定的,称为指针类型的基类型。指针类型定义如下: 类型名=^基类型名; 例如:type q=^integer; var a,b,c:q;
4.需要注意之处
1、P与P^的区别 P是指向该动态变量的指针变量名,P^则称为动态变
量或标志变量。P的值是P^的首地址,P^的值为与基类型 相同的一个值。
2、定义后及时分配存储单元 定义了一个指针变量后,并没有为该指针分配动态存
储单元,此时的P的值无定义,调用P^则会产生运行错误。 若想使该指针可用,可以对指针赋值,也可以通过NEW() 过程分配存储单元。
2006/9/1
集里中学: 徐 晨 辉
指针是通过地址来访问变量的一种特殊的数据 类型,属于动态的数据结构,它可以在需要时 产生,用完后则又可以取消或回收,以减少占 用的内存空间。指针变量与其他类型的变量不 同,它占有的不是数据,而是地址。
由于动态数据结构的变量是在程序执行过 程中动态生成的,所以不能预先予以说明,无 法预先给这些变量起名字,访问时也无法通过 名字直接输出或显示,而只能用指针得到其地 址,然后间接访问。
Biblioteka Baidu
为了节省内存空间,对于一些已经不使用的现有动 态变量,应该使用标准过程dispose予以释放。过程 形式为:dispose(指针变量名);为new(指针变量名) 的逆过程,其作用是释放由指针变量所指向的动态 变量的存储单元。例如在用了new(p)后在调用 dispose(p),则指针p所指向的动态变量被撤销,内 存空间还给系统,这时p的值为 nil。
说明:q是一指向整型存储单元的指针类型,其中“^”为指针 符。a,b,c均定义为指针变量,分别可以指向一个整型存储 单元。
上例也可用变量说明为: var a,b,c:^integer;
2、动态变量
应用一个指针指向的动态存储单元即动态变量的形式 如下:指针变量名^
例如:p^、q^、r^
以下语句把整数5存放到p所指向的动态变量p^中去: p^:=5;
new(指针变量名); 如果有下列变量定义语句:
var p: ^integer; 仅仅说明了p是一个指向整型变量单元的指针变量,但 这个整型单元并不存在,在指针变量p中还没有具体的地址 值。在程序中必须通过过程调用语句:new(p);才在内存中 分配了一个整型变量单元,并把这个单元的地址放在变量p 中,一个指针变量只能存放一个地址。在同一时间内一个指 针只能指向一个变量单元。当程序再次执行new(p)时,又在 内存中新建立了一个整型变量单元,并把新单元的地址存放 在p中,从而丢失了旧的变量单元的地址。
3、使用后及时收回存储单元 指针使用后,不会自动归还占用的存储空间,应及时
使用DISPOSE()过程来释放P^所占用的存储单元,以 免浪费有限的存储空间.
5、单链表
以下语句把p所指向的p^中的值赋给整型变量i: i:=p^;
如果指针变量p并未指向任何存储单元,则可用下列 赋值语句:
p:=nil; 其中nil是保留字,表示“空”,相当于C语言里面的n
3、对动态变量的操作
在Turob Pascal程序中,动态变量不能由var直接定义而是通 过调用标准过程new建立的。过程形式为:
1、定义指针类型
在Turbo Pascal中,指针变量用来存放某个存储单元的地址, 即指针变量指向某个存储单元。一个指针变量仅能指向某一
种类型的存储单元,这种数据类型是在指针类型的定义中确
定的,称为指针类型的基类型。指针类型定义如下: 类型名=^基类型名; 例如:type q=^integer; var a,b,c:q;
4.需要注意之处
1、P与P^的区别 P是指向该动态变量的指针变量名,P^则称为动态变
量或标志变量。P的值是P^的首地址,P^的值为与基类型 相同的一个值。
2、定义后及时分配存储单元 定义了一个指针变量后,并没有为该指针分配动态存
储单元,此时的P的值无定义,调用P^则会产生运行错误。 若想使该指针可用,可以对指针赋值,也可以通过NEW() 过程分配存储单元。