532628838
圣骑士
圣骑士
  • 注册日期2011-06-10
  • 发帖数98
  • QQ
  • 火币517枚
  • 粉丝77
  • 关注39
阅读:3627回复:0

DELPGI指针类型定义的语法

楼主#
更多 发布于:2011-08-01 17:11
    (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函数来释放。


喜欢0 评分0
游客

返回顶部