Procedures and functions
Parameters(参数)
Parameters: Overview(概述)
大多数过程头和函数头包含参数列表,比如,在函数头
function Power(X: Real; Y: Integer): Real; 中,参数列表是(X: Real; Y: Integer)。
参数列表由一对括号包围,包含由分号隔开的一系列参数声明。每个声明中列出的参数名由逗号分开,大多数情况下后面跟一个冒号和一个类型标志符,在一些情况下跟一个等号和一个默认值。参数名必须是有效标志符。任何一个声明能以下面的一个关键字作为前缀:varsemantics)。比如: (X, Y: Real)
(var S: string; X: Integer)
(HWnd: Integer; Text, Caption: PChar; Flags: Integer) (const P; I: Integer)
参数列表指定了调用例程时必须传递的参数的数目、顺序和类型。若一个例程没有任何参数,声明时忽略括号和标志符列表。
procedure UpdateRecords; begin ... end;
在过程体或函数体中,参数名(上面第一个例子中的X和Y)能被用作局部变量,在局部声明中不能重新声明参数名。
Parameter semantics(参数语义)
Parameter semantics: Overview(概述)
参数以下面几种方式进行分类:
? 每个参数分为value(数值参数)、variable(变量参数)、constant(常量参数)或默认是数值参数。关键字var、const以及out分别表示变量参数、常量参数和? 数值参数总是有类型的,而常量参数、变量参数和out参数既可以是有类型的,也可以是无类型的。? 数组参数有特殊规则。
文件类型以及包含文件的结构类型(的实例)只能作为变量参数传递。Value and variable parameters(数值参数和变量参数)大多数参数是数值参数(默认)或变量参数(var)。数值参数通过数值传递,而变量参数通过引用传递。要了解这句话的意义,考虑下面的函数。
function DoubleByValue(X: Integer): Integer; // X是数值参数begin
X := X * 2;
const和out(参考out(out参数。
Parameter out参数),
- 87 -
、
Procedures and functions
Result := X;
end;
function DoubleByRef(var X: Integer): Integer; // X是变量参数
begin
X := X * 2;
Result := X;
end;
这两个函数返回同样的结果,但只有第二个(DoubleByRef)能改变传给它的变量的值。假设我们这样调用函数:
var
I, J, V, W: Integer;
begin
I := 4;
V := 4;
J := DoubleByValue(I); // J = 8, I = 4
W := DoubleByRef(V); // W = 8, V = 8
end;
这些代码执行后,传给DoubleByValue的变量I,它的值和我们初始赋给它的值是相同的。但传给DoubleByRef的变量V,它有不同的值。
数值参数就像局部变量,它们的初始值是传给过程或函数的值。若把一个变量当作数值参数传递,过程或函数创建它的一个拷贝,改变这个拷贝对原始变量没有影响,并且,当程序返回调用者时,这个拷贝将被丢弃。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-62.html
难喝要死
主要是他是无害通过
如果战争胜利