在线求解.解决方案
在线求解...
我是delphi初学者,今天上头要我用这个函数指针传递参数,,我想问一下就是:函数指针传参这个工作原理是什么???谁能给我详细的解说一下,举例最好,谢谢!
------解决方案--------------------
------解决方案--------------------
额!
已经有答案了!
呵呵!
------解决方案--------------------
指针传参就是传参数的地址,(通常指针指向的内类占的字节比指针大)这样节省开销。引用类型作为形参,其实delphi都是传的指针
我是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都是传的指针