pascal子程序参数问题

来源:百度知道 编辑:UC知道 时间:2024/06/20 17:03:17
procedure(var a,b:integer)和procedure(a,b:integer)有什么区别

procedure
var
a,b:integer;

呢?

procedure(var a,b:integer)

a,b是形参,如果全局有变量a、b,值改变。

procedure(a,b:integer)有什么区别

a,b是形参,如果全局有变量a、b,值不改变。

procedure
var
a,b:integer;

a,b是实参(亦可能叫值参),如果全局有变量a、b,值不改变。(这一点可能我记错了),

这俩统称形参
带var的是变量形参,不带的称为值形参;
其实可以说,值形参是过程的输入参数,变量形参是过程的输出参数
对应于值形参的实参可以是表达式,对应于变量形参的实参只能是变量。
1、值形参
值参应该强调的是:
①形参表中只能使用类型标识符,而不能使用类型。
②值形参和对应的实参必须一一对应,包括个数和类型。
③实参和值形参之间数据传递是单向的,只能由实参传送给形参,相当赋值运算。
④一个特殊情况是,当值形参是实型变量名时,对应的实参可以是整型表达式。
⑤值形参作为子程序的局部量,当控制返回程序后,值形参的存储单元释放。

2、变量形参
变量形参必须在形参前加关键字var。
应该注意的是:
①与变量形参对应的实参只能是变量名,而不能是表达式。
②与变量形参对应的实参可以根据需要决定是否事先有值。
③变量形参与对应的实参的类型必须完全相同。
④对变量形参,运行时不另外开辟存储单元,而是与对应的实参使用相同的存储单元。也就是说,调用子程序时,是将实参的地址传送给对应的变量形参。
⑤当控制返回到调用程序后,变量形参的存储单元不释放,但变量形参本身无定义,即不得再使用。
⑥选用形式参时,到底是使用值形参还是变量形参,应慎重考虑。值形参需要另开辟存储空间,而变量形参会带来一些副作用。一般在函数中使用值形参,而在过程中才使用变量形参,但也有例外。