指针与动态数据类型.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章指针与动态数据类型内存内存复习a[0]80Ka[1]数组的特点?长度固定连续存储a[2]……90K…...优点:方便随机存取缺点:长度固定,造成浪费; 需要连续空间; 插入删除操作不方便; 50K…...a : array[1..100, 1..700] of integer;a : array[1..10] of integer;内存引言10000H80K新闻***************************************************(转第3版)30000H30000H90K(接第2版)***************************************************50K…...部分串连成整体内存0…...20002001200220032005…...8.1 指针8.1.2 指针数据类型指针与指针变量指针:一个变量的地址指针变量:存放变量地址的变量ivar i :integer; x : real;x2004内存中每个字节有一个编号-----地址类型和变量定义 TYPE 类型标识符 = ^基类型 VAR 变量标识符 : 类型标识符;TYPE pointer1 = ^real ;VAR p1: pointer1;注意:1、指针变量只能指向定义时所规定类型的变量;2、指针变量定义后,变量值不确定,应用前必须先赋值0…...…...TYPE pointer1 = ^real ;VAR p1: pointer1; x : real; a : integer;begin x:=1.5; p1:= @x ; p1:= @a;× p1:=2000; × writeln(p1^); p1^ := p1^+1;end.2. 允许进行的运算 赋值 指针常量只有一个:Nil 取值 ^ 关系运算 只有= 和 10CD1.58.2 动态数据类型8.2.1 静态数据类型与动态数据类型静态类型:数据属性在编译时确定动态类型:数据属性在运行时确定不在变量说明部分定义在程序运行期间生成通过指针变量间接访问8.2.2 动态变量的生成与回收1. 堆式存储管理2. 动态变量的生成 标准过程 new( ) 获取内存空间,将空间首地址存入指针变量。3. 动态变量的释放与回收 标准过程 dispose 释放内存空间TYPE pointer1 = ^real ;VAR p1: pointer1;begin new(p1); p1^:=5; dispose(p1);end.8.3 指针的应用链表链表头结点数据下一结点地址链表尾第一条信息包裹礼物下一包裹位置结束树下132∧草丛中石头旁结束特点:长度可变,不必连续成员项是指向本记录类型的记录指针链表132∧link = ^node;node = record //节点 data:integer; next:link;end;链表头结点数据下一结点地址链表尾【例8.3.1】输入一组整数,以0为结束标志,建立链表。 问题分析:穿珠链的方法。反复在链表最后加入新结点,tail尾指针后移。link = ^node;node = record //节点 data:integer; next:link;end;尾插法建链表建立头结点(同时也是链表尾)循环【 新建结点,输入数据; 接入链表尾//两种情况:头结点和其他】直到输入0为止链表尾结点next为Nil87135tailtailtailtailheadtail^尾插法建链表(头结点空)建立头结点(同时也是链表尾)循环【 新建结点,输入数据; 接入链表尾; 移动尾指针;】直到输入0为止链表尾结点next为Nil9735ptailhead ^0…...…...指针和动态数据Varp : ^real;x : real;begin p := @x; x := 5; //直接访问 p^ := 6; //间接访问px new(p); //动态数据 p^ := 15; //只能间接访问End;Procedure createLink(var head:link);Var tail, p : link; x:integerBegin new(head); tail := head; while true do begin read(x); if x=0 then break; new(p); p^.data:=x; tail^.next:=p; tail := p; end; tail^.next := nil;End;Typelink = ^node;node = record //节点 data:integer; next:link;end;Var head: link;Begin create

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档