在线求解.解决方案

在线求解...
我是delphi初学者,今天上头要我用这个函数指针传递参数,,我想问一下就是:函数指针传参这个工作原理是什么???谁能给我详细的解说一下,举例最好,谢谢!

------解决方案--------------------

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

type//定义一个函数指针,名为PCalc
  TCalc = function(a, b: integer): integer;
  PCalc = ^TCalc;

function FunA(a, b: integer): integer;//定义一个加法函数
begin
  Result := a + b;
end;

function FunB(a, b: integer): integer;//定义一个减法函数
begin
  Result := a - b;
end;

function Calc(CalcFun: PCalc; a, b: integer): integer;//定义一个计算函数,计算结果由传进来的函数指针决定
begin
  Result := TCalc(CalcFun)(a, b);//调用函数指针CalcFun计算两个数
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(Calc(@FunA, 100, 10)));//传递加法函数到Calc函数内,会得到100+10的结果
end;

procedure TForm1.Button2Click(Sender: TObject);//传递减法函数到Calc函数内,会得到100-10的结果
begin
  ShowMessage(IntToStr(Calc(@FunB, 100, 10)));
end;

end.


------解决方案--------------------
额!
已经有答案了!
呵呵!
------解决方案--------------------
指针传参就是传参数的地址,(通常指针指向的内类占的字节比指针大)这样节省开销。引用类型作为形参,其实delphi都是传的指针