1 形式参数与实际参数
形式参数是指出现在过程或者函数首部“形参表”中的变量名,表示用于接收数据的变量。实际参数是指
在调用过程或是函数时,传递给过程或函数的常量、变量或表达式。
在过程或是函数的定义中,使用形式参数来确定该过程或函数所需要的参数的个数、类型以及参数之间的次序。在调用该过程或是函数时,实际参数将替换形式参数,形参和实参之间的对应关系为:第一个形参接受第一个实参的值,第二个形参接受第二个实参的值,依次类推。
2 参数的传递方式
在Delphi中,有两种参数的传递方式,“按值传递”和“按地址传递”。在过程或者函数的首部“〈形参表〉”中的参数前面使用系统的保留字Var或者Out的形参变量表示为“按地址传递”,使用Const或没有任何保留字的形式参数,将使用“按值传递”的方式。
声明为“按值传递”的参数仅负责得到实际参数的值,不保留内部对该参数的改变,而声明为“按地址传递”的参数将保留函数或过程内部对实际参数值的改变,并在调用结束后返回该值。“按地址传递”的参数实参和形参的类型必须一致,而“按值传递”的实参和形参之间仅需要赋值相容即可。
4.4.3 使用缺省参数
在声明函数或过程中,可以给形参指定一个缺省的值,在调用时,如果没有给形参指定实参,则系统自动
使用缺省的值,如果赋值,则使用实际参数的值。缺省参数声明的方法是在形参的类型后面使用“=”等
号,并给出具体的常量值。
但是需要注意的是,如果后面的参数没有使用缺省参数,不允许仅对前面的参数使用缺省参数。
4.4.4 赋值兼容与调用约定
赋值兼容是指变量可以进行赋值或进行参数传递。当两个类型要进行赋值操作而又不满足赋值兼容时,将
产生编译错误。
Object Pascal 提供了五种过程和函数的调用方式,分别为Register,Pascal,Cdecl,Stdcall,SafeCall。 缺省的调用方式是Register方式。 Register和Pascal调用方式传递参数是从左到右,而Cdecl, Stdcall和 Safecall 调用方式传递参数则是从右到左。 Register调用方式自动清除调用所使用的堆栈和寄存器,负责处理调用错误,同时也是速度最快的调用方式。