Lazarus过程

1. 过程就是子程序,做成子程序方便重复调用,调用时使用过程名就可以。
过程与函数是有区别的,过程没有返回值,函数有返回值
过程定义格式:
procedure Name;
const
(* 定义常量 *)
var
(* 定义变量 *)
begin
(* 语句体 *)
end;

2.传送参数,格式如下:
procedure Name (a, b : integer; c, d : real);
begin
a := 10;
b := 2;
writeln (a, b, c, d)
end;
//a、b两个整型参数,c、d两个实数参数;多个参数间用分号分隔;

传递参数的另一种方式是按引用传递(按地址传递),按地址传递参数时,把实参变量的地址传送给被调用过程,形参和实参共用内存的同一地址。在被调用过程中,形参的值一旦改变,相应实参的值也跟着改变。
通过在参数组前加VAR关键字,实现按地址参数传递:
procedure Name (a, b : integer; VAR c, d : integer);
begin
c := 3;
a := 5
end;
begin
alpha := 1;
gamma := 50;
delta := 30;
Name (alpha, 2, gamma, delta);
end.
//....
程序运行后,gamma的值是3,因为c是按引用传递过来的参数;alpha的值是1,因为它是按值传递过来的参数,看起来有点混乱。
按值传递参数,会复制一份传递过来的值,供过程使用。作用域只在过程中。
按地址传递参数,会使用同一变量值,相当于建立映射在同一内存地址。赋值操作会影响到外部对应变量。
按句话说: 按值传递参数,是单向的:主程序至过程。 按地址传递参数,是双向的。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注