Basic Pascal Tutorial/Chapter 4/Parameters/zh CN
From Lazarus wiki
(Redirected from Parameters/zh CN)
Jump to navigationJump to search
│
български (bg) │
English (en) │
español (es) │
français (fr) │
日本語 (ja) │
中文(中国大陆) (zh_CN) │
4B - 参数传递 (原作者: Tao Yue, 状态: 未更改)
参数列表做为过程的一部分,允许传递参数给过程:
procedure 过程名 (参数组列表);
多个参数组间用分号分隔。
参数组1; 参数组2; ... ; 参数组n
参数组格式:
标识符1, 标识符2, ... , 标识符n : 数据类型
通过参数传递,以供过程使用这些参数,并且类型都与传递参数的相同。
procedure Name (a, b : integer; c, d : real);
begin
a := 10;
b := 2;
writeln (a, b, c, d)
end;
传递参数给过程:
alpha := 30;
Name (alpha, 3, 4, 5);
在主程序中:
alpha值为30,之后,传递给过程中的a。
在过程中:
a重新赋值为10。实际发生的事情是,变量a和alpha值完全不同。
过程中的a赋值,并没有影响到主程序中的alpha变量。
这就是所谓的按值引用。
传递参数的另一种方式是按引用传递(按地址传递)。
按地址传递参数时,把实参变量的地址传送给被调用过程,形参和实参共用内存的同一地址。在被调用过程中,形参的值一旦改变,相应实参的值也跟着改变。
通过在参数组前加VAR关键字,实现按地址参数传递:
VAR 标识符1, 标识符2, ..., 标识符n : 数据类型;
常量和文本不能做为实际参数,因为它们可能在过程中被改变。
下面是按值、按引用方式传递参数的示例:
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,因为它是按值传递过来的参数,看起来有点混乱。
按值传递参数,会复制一份传递过来的值,供过程使用。作用域只在过程中。
按地址传递参数,会使用同一变量值,相当于建立映射在同一内存地址。赋值操作会影响到外部对应变量。
按句话说: 按值传递参数,是单向的:主程序至过程。 按地址传递参数,是双向的。
上一页 | 目录 | 下一页 |