{现在这个函数并没有 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;