Pascal 指针在子程序中

  • 将指针传递给子程序

    指针变量可以作为参数传递给函数和过程参数。指针变量既可以作为值也可以作为变量参数传递;但是,当作为变量参数传递时,子程序可能会无意间更改指针的值,这将导致奇怪的结果。以下程序说明了传递指向函数的指针-
    
    program exPointertoFunctions;
    type
       iptr = ^integer;
    
    var
       i: integer;
       ptr: iptr;
    
    function getNumber(p: iptr): integer;
    var
       num: integer;
    
    begin
       num:=100;
       p:= @num;
       getNumber:=p^;
       end; 
    
    begin
       i := getNumber(ptr);
       
       writeln(' Here the pointer brings the value ', i);
    end.
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    Here the pointer brings the value: 100
    
  • 子程序返回指针-

    一个函数可以返回一个指针作为其结果。以下程序说明了从函数返回指针-
    
    program exPointersFromFunctions;
    type
       ptr = ^integer;
    
    var
       i: integer;
       iptr: ptr;
    function getValue(var num: integer): ptr;
    
    begin
       getValue:= @num;
    end;
    
    begin
       i := 100;
       iptr := getValue(i);
       
       writeln('Value deferenced: ', iptr^);
    end.
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    Value dereferenced: 100