首页 第7章 指针

第7章 指针

举报
开通vip

第7章 指针null第7章 指针类型 第7章 指针类型 上章回顾: 类型定义语句 枚举类型 子界类型 集合类型null本章概要: 指针类型的声明 指针的运算 无类型指针 字符指针类型 动态存储结构的实现 7.1 循序渐进学理论 7.1 循序渐进学理论 指针构造和访问动态数据结构会更加灵活、方便。Windows API函数中使用了指针,学习基于Windiws平台的程序设计,必然涉及与Windows的交互。7.1.1 指针类型的声明7.1.1 指针类型的声明声明指针类型的语法如下: ...

第7章  指针
null第7章 指针类型 第7章 指针类型 上章回顾: 类型定义语句 枚举类型 子界类型 集合类型null本章概要: 指针类型的声明 指针的运算 无类型指针 字符指针类型 动态存储结构的实现 7.1 循序渐进学理论 7.1 循序渐进学理论 指针构造和访问动态数据结构会更加灵活、方便。Windows API函数中使用了指针,学习基于Windiws平台的程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 ,必然涉及与Windows的交互。7.1.1 指针类型的声明7.1.1 指针类型的声明声明指针类型的语法如下: Type 〈指针类型标识符〉 = ^〈基类型〉; 其中,指针类型标识符即是指针类型名,基类型可以是简单类型,如整型、实型、字节型等,也可以是结构类型,如数组、 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 、集合等类型。 指针声明示例如下: 【例7-1】指针的简单定义 Type Tr=^Integer;P1=^Real; stu=Record Name:String[10]; Age:Integer; Scores:real; End; BytePtr = ^ Byte;WordPtr = ^ stu;null【例7-2】指针的简单应用 Var m:integer; //m为整型变量 x1,x2:^integer; // x1 ,x2为指向整型的指针变量 begin m:=20; x1:=@m;//将变量m的地址指定给x1 new(x2); //在内存中分配适于存储整型数据的存储单元,并将单元的地址写入指针x2中 x2^:=150; dispose(x2); //释放由new分配的动态存储单元 end;null指针x1指针x21507.1.2 指针的运算7.1.2 指针的运算这里主要介绍用于指针运算的基本用法。 1. New过程 New是Object Pascal中的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 例程(在System单元声明),用于在应用程序中为动态变量分配一块区域,并把该区域的地址赋给指针变量。所分配区域的大小由指针所指的类型决定。 New过程的声明如下: Proceddure New(var P:Pointer); 2. @操作符 @操作符是个一元操作符,用于获得操作数的地址,@后面的操作数可以是变量、过程、函数或类类型中的方法。null3. PTR函数 Ptr函数是Pascal中的标准例程(在System单元声明),用于把一个指定的地址转换为指针。 Ptr函数的语法为: function Ptr(Address: Integer): Pointer; 其中Address是一个整数,用于表示一个32位地址,函数执行的结果是把32位地址转化为指针。 4. GetMem过程 GetMem过程也是Pascal中的标准例程(在System单元声明),类似于New,用于在应用程序堆栈中为动态变量申请一块指定大小的区域,并把该区域的地址赋予指针变量。 GetMem函数的语法为: procedure GetMem(var P: Pointer; Size: Integer); 7.1.3 无类型指针7.1.3 无类型指针 无类型的指针是指指针变量在声明时没有指明基类型。无类型指针在声明中只使用Pointer。 例如: var pAnyPoint:Pointer; 可以指向任何类型,但是不能用指针变量名后加^的形式来引用它的动态变量,如果引用需转换: 【例7-3】指针的简单应用 Type Tpint= ^ integer; Var M,n:integer; P:pointer; Pt:tpint begin m:=150; P:=@m; Pt:=tpint(p); //将pointer类型进行转换 N:=pt end;7.1.4 字符指针类型7.1.4 字符指针类型字符指针类型即PChar数据类型,是一个指向以NULL(不是零)字符结尾的字符(Char)串的指针。7.1.5 动态存储结构的实现7.1.5 动态存储结构的实现 指针常用来描述动态存储结构的实现。动态存储结构中较常用的有链表、堆栈、队列等存储结构。可以把堆栈和队列看成特殊的链表。 链表是一组元素的序列,链表中的元素通常称为节点,第一个节点称为表头,最后一个节点称为表尾。指向表头的指针称为头指针,在这个头指针中存放着表头的地址。节点一般用记录来描述,描述节点的记录至少含有两个域,一个域用来存放数据,称为值域;另一个域存放下一个节点的地址,称为指针域。如下图:null链表null1.链表的分类: 单向链表,双向链表,循环链表 2.链表可执行操作: 查找,插入,删除(任意位置) 3.特殊链表: 队列:先进先出链表 堆栈:先进后出链表null【例7-4】下列示例是一个关于在链表中利用指针处理字符串的程序。 如程序所示 nullType PLink=^Node; Node=Record Data:string[30]; Next:Plink; End; Var DtRec:Plink; //声明全局变量 procedure TForm1.Button1listClick(Sender: TObject); Var p:Plink; Begin ListBox1.Clear; // 清列表框 P:=Dtrec; {遍历链表,将数据赋给 ListBox1的Items属性) } repeat ListBox1.Items.Add(P^.Data); P:=P^.Next; until P=Nil; end;nullprocedure TForm1.Button2delClick(Sender: TObject); Var P,p1:Plink; i:Integer; begin i:=0; p:=Dtrec; if P=NIL then showMessage('链表为空表!') else //链表不空 if p^.data=Edit1.Text then // 第一个节点为要删除节点 begin DtRec:=P^.Next; P^.Next:=NIL; p:=Dtrec; end else // 如果第一个节点不是要删除的节点 begin p1:=P^.Next; if P1<>NIL then repeat if P1.Data=Edit1.Text then // 找到一个要删除节点 begin P^.Next:=P1^.Next; P1:=P; i:=i+1; end else Begin P:=P1; P1:=P1^.next; end until P1=NIL; if I=0 then ShowMessage('无匹配的数据');end; end;nullprocedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); Var tempP,P:PLink; begin if Key=#13 then // 如果按下〈Enter〉键 Begin new(tempP); // 创建一个节点 tempp^.Data:=Edit1.Text; tempP^.Next:=NIL; if Dtrec=NIL Then // 如果链表为空表 begin NeW(Dtrec); DtRec:=tempP; end // 建链表 else // 如果链表不是空表 begin p:=DtRec; while p^.Next<>NIL do P:=P^.Next; // 找表尾 P^.Next:=tempP; // 将新节点添加到表尾 end; Edit1.Clear; // 清编辑框 Edit1.SetFocus; // 当前活动焦点置回到编辑框上 end; end; end.7.2 上机练习重应用7.2 上机练习重应用练习:课本程序5-8null本章回顾: 指针类型的声明 指针的运算 无类型指针 字符指针类型 动态存储结构的实现
本文档为【第7章 指针】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_216663
暂无简介~
格式:ppt
大小:399KB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2010-12-12
浏览量:18