深入方法(22)- 指针参数

{现在这个函数并没有 var 前缀, 也就是说参数应该不会被修改的}  
function MyFun(p: PInteger): Integer; {PInteger 是 Integer 的指针类型}
begin
  p^ := p^ * 2;
  Result := p^;
end;


{测试}
procedure TForm1.Button1Click(Sender: TObject);
var
  i,x: Integer;
begin
  i := 8;

  x := MyFun(@i);           {调用函数}
  ShowMessage(IntToStr(x)); {16}

  {现在 i 的值应该不会被修改, 但...}
  ShowMessage(IntToStr(i)); {16}

{
  没有 var 或 out 前缀的参数, 应该是传值的;
  有 var 或 out 的参数是传地址的;
  
  指针就是一个地址, 尽管没有指定传地址, 但事实上就是给了一个地址, 
  所以参数值也会改变!
}
end;
posted @ 2020-04-20 17:56  范思哲  阅读(164)  评论(0编辑  收藏  举报