课件编号709540

指针类型

日期:2024-05-03 科目:信息技术 类型:高中课件 查看:45次 大小:23697Byte 来源:二一课件通
预览图 1/9
指针,类型
  • cover
(课件网) 存储空间的分配 Var x,y:integer; Begin x:=4; y:=5; End. 编译时给变量分配空间 运行时给变量赋值       x 1000H y 4000H 4 5 思考:变量x,y的关系? 存储空间的分配 Var a:array [1..10] of integer; i:integer; Begin for i:=1 to 10 do a[i]:=i; End. 1000H 1002H 1004H 1006H 1008H 1010H 1012H 1014H 1016H 1018H 1 2 3 4 5 6 7 8 9 10 a 思考:数组a[i]之间的关系? 指针类型格式: TYPE <指针类型标识符> = ^ <结点类型标识符>; <结点类型标识符> = <类型> VAR <指针类型变量表> : <指针类型标识符>; 或 VAR <指针类型变量表> : ^ <结点类型标识符>; ①结点类型为整型 type pointer=^integer; var p1,p2:pointer; ②结点类型为整型 var a:^real; b:^boolean; ③结点类型为记录型 type person=record        name:string[10];        sex:char;        age:1..100       end; var p:^person; 编写一个简单的指针类型的程序 Type person=record        name:string[10];        sex:char;        age:1..100       end; Var p:^person; Begin new(p); p^.name:=‘Peter’; p^.sex:=‘M’; p^.age:=20; with p^ do writeln(name:10, sex:10, age:10); dispose(p) End. 1、开辟动态存储单元 new过程调用的一般格式:  new (指针变量) 功能:开辟一个存储单元,并把此存储单元的地址赋给指针变量。 var p: ^ integer; 编译时给 p分配空间             p p XXXX 执行new(p)后生成新单元 新单元的地址为XXXX new(p); 2、释放动态存储单元 dispose过程的一般格式: dispose (指针变量) 功能:释放指针所指向的存储单元,使指针变量的值无定义。 dispose(p); p:=NIL 3、动态存储单元的引用 引用动态存储单元一般格式: <指针变量>^ var p:^integer; i:integer; begin new(p); p^:=4;i:=p^; ①编译时分配存储空间 ②执行new语句 ③p^:=4 ④i:=p^ ? ? p i ? ? p i ? p^ ? ? p i 4 p^ ? 4 p i 4 p^ program point1(input,output); type pointer =^ integer; var a,b,c:pointer; begin new(a); new(b); new(c); a^:=5; b^:=8; writeln(‘a=’, a^, ‘ b=’, b^) c:=a; a:=b; b:=c; writeln(‘a=’, a^, ‘ b=’, b^) end. 例1 用指针变量交换两个变量的值 。 program ch346; {初赛篇P157例46} type pointer : ^ integer; var p1,p2:pointer; begin new(p1); p1^:=5; p2:=p1; new(p1); p1^:=5; if p1=p2 then writeln(‘p1=p2’) else writeln(‘p1<>p2’) if p1^=p2^ then writeln(‘p1^=p2^) else writeln(‘p1^<>p2^) writeln(s) end. 运行结果: p1<>p2 p1^=p2^ 单向链表 (设输入次序为x1,x2,…,xn) 先进先出队 先进后出栈 x2 … head x3 x1 x9 x10 x9 … head x8 x10 x2 x1 指针类型格式: TYPE <指针类型标识符> = ^ <结点类型标识符>; <结点类型标识符> = <类型> VAR <指针类型变量表> : <指针类型标识符>; 或 VAR <指针类型变量表> : ^ <结点类型标识符>; 单向链表定义 TYPE point = ^ node node = RECORD data : real ; link : point END; VAR head, last, next : point ; x:real ; 构建链表(先进先出) Var head, last, next : point ; x:real ; Begin read(x) ; new(head) ; head^.data:=x ; last:=head ; read(x) ; while x>=0 do begin new(next) ; next^.data:=x; last^.link:=next ; last:=next ; read(x) end ; last^.link:=NIL End. 输出链表 next:=head ; while next<>NIL do begin write(next^.data:6:0); next:=next^.link end ; writeln 删除一个结点 last next ... ...

~~ 您好,已阅读到文档的结尾了 ~~