{现在这个函数并没有 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;
指针参数
最新推荐文章于 2024-08-07 00:05:48 发布
本文通过一个具体的Delphi示例,探讨了指针类型的参数在函数调用过程中的行为。虽然函数定义中未使用var或out关键字,但由于传递的是指针,实际上传递的是变量的地址,导致原始变量的值在函数调用后发生了改变。
3206

被折叠的 条评论
为什么被折叠?



