【4.Delphi程序设计】4.参数传递

4.参数传递

4.1形式参数与实际参数

形式参数简称形参,是在过程或函数首部形参表中的变量名,用于接收数据的变量。

实际参数简称实参,是在调用过程或函数时传递给过程或函数的常量、变量或表达式。

在使用中,实参和形参的变量名不一定相同,但调用的顺序必须一致,在各个参数之间用逗号分隔。

4.2参数的传递

Delphi中,参数的传递方式有两种:

  • 按值传递

  • 按地址传递

在形参表中,使用Var或者Out的形参表示按地址传递;使用Const或没有任何保留字说明的形参将使用按值传递的方式。

按地址传递的参数,实参和形参的类型必须一致,按值传递的参数,实参和形参之间只需要赋值相容即可。

4.3默认参数

在声明函数或过程时,可以给形参指定一个默认的值,在调用时,如果没有给形参传递实参,则系统自动使用默认值,如果传递了实参,则使用实参的值。

默认参数的声明方法是在形参的类型后面使用等号并指明具体的常量值,如:

procedure Add(x, y: Integer; z: Integer=10);
begin
    ...
end;

在形参声明中,如果后面的参数没有使用默认值,不允许对前面的参数使用默认值,如下面的代码就是错误的

procedure Add(z: Integer=10; x, y: Integer);
begin
    ...
end;

4.4赋值相容

在Object Pascal中,赋值相容是指变量可以进行赋值或进行参数传递。

对于形参T1和实参T2,要求满足下面的条件:

  1. T1和T2类型相同,且都不是文件类型或包含文件类型的自定义类型

  2. T1和T2是兼容的有序类型,类型T2的值在T1的取值范围内

  3. T1和T2都是实数类型,类型T2的值在T1的取值范围内,或者T2是整型

  4. T1和T2都是字符串类型,或者T2是字符类型或者紧凑的字符串类型

  5. T1是Variant类型,T2是Integer、Real、String或boolean类型

4.5调用约定

在Object Pascal中,提供了5种函数或过程的调用方式:

  • Register - 默认的调用方式

  • Pascal

  • Cdecl

  • StdCall

  • SafeCall

Register和Pascal调用方式传递参数是从左到右,而Cdecl、StdCall、SafeCall调用方式传递参数是从右到左

Register调用方式会自动清除调用所使用的堆栈、寄存器,负责处理调用错误,同时也是最快的调用方式。

示例:指定过程的调用方式为Pascal

procedure Add(x, y: Integer; z: Integer=10); pascal;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Janeb1018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值