DELPGI指针类型定义的语法
4520 点击·0 回帖
![]() | ![]() | |
![]() | (1)指针类型定义的语法 type <指针类型标识符>:“<基类型>; 指针把指向动态变量的类型由“^,’符后基类型来标识,同时也由‰,’符号表明这里定义的是一个指针类型。 例2.9 定义一个学生记录的指针类型变量。 type student=record name:String[8]; number:Integer; sex:(male,female); age:Integer; end; per:“student; Var 1 ^ P上,p么:per; ^ 0 r: char: 在上例中,per是记录指针类型,变量pl、p2被定义成指针类型变量,是指向记录型的动态变量;r指针变量是指向字符型动态变量。 (2)指针的使用 指针经常在以下情况使用:被赋值,作等或不等的关系运算,用以访问动态变量,作为参数。 特别要注意的是,指针变量在使用前要用new过程申请动态变量的存储单元,使用完后,要用dispose过程释放动态变量的存储单元。new和dispose过程使用的语法格式是: new(指针变量); dispose(指针变量); 2.指针变量的操作 两个类型不一致的指针变量是不允许相互赋值的。此外,指针变量只允许“=’’与tt<>,,两种关系运算。指针的关系运算通常用来检测一个指针变量是否为空指针。 看下面这段代码说明指针变量的功能: type buffer:String[255]; ptr=“buffer; Var bl:buffer; b2:ptr; 这里,b l和b2的功能完全相同,都代表一个最长可达255 B的字符串。不同的仅表现在占用内存的方法上。b l是静态分配的内存空间,b2则是动态分配的内存空间,即在程序中要使用new过程才可分得内存空间。看如下两条语句:47 变量 b l:=’zhang’; b2“: ’zhang’; 在b2的后面有一个“^,’符号,这是指针变量的访问方法。例如可把它的值传递给同类型的b l:=b2“; 在这里,要注意b2和b2“的区别。b2是一个4 B的指针变量,而b2“则是一个256 B的字符串变量。前者是静态的,存放的是动态变量的内存首地址;后者是的数据。可对例2.9进一步作如下的编程: type pstu:“student; student.--record name :String[8]; 动态的, 存放的是动态变量中 number:1..1 00; sex:(female,male,); age:Integer; end; Var list,peopy t pstu; begin new(1ist); list“.name::’wang’; list“.number::1 5; list“.sex:=female; list“.age:=1 9; pcopy:=list; if pcopy“.sex=male then SS:=’male’ else if pcopy“.sex=female then SS:=’female’; writeln(’name:’,pcopy“.name,’number’,pcopy“.number,sex:’,ss,’age:’,pcopy“.age); readln; dist (1ist)dispose list; I : end; 在定义了指针变 函数是 new 量后,系统并未为其分配内存,可使用标准函数new为其分配内存.dispose函数的逆过程,通过使用new函数获得的内存空间必须使用dispose函数来释放。 | |
![]() | ![]() |