======================================================
注:本文源代码点此下载
======================================================
对类的解释确实写得不错,通俗易懂,让初学者或对类不太清楚的人来讲很有帮助。
对于你例中所举的两个方法,一个是过程,一个是函数,两个都使用了引用传递,这样两个方法的调用其实就一样了。如第一段代码改成:
//调用过程与函数
procedure tform1.button1click(sender: tobject);
var
i: integer;
begin
i := 6;
myproc(i);{使用过程}
showmessage(inttostr(i)); {12}
i := 6;
myfun(i);{使用函数}
showmessage(inttostr(i)); {12}
end;
end.
两者的调用方法是完全一样的,生成的结果也一样,这就不能区分过程和函数之间的区别了。如果将函数定义部分和实现部分括号内的var去掉,这时候就是传值的了,函数的作用就比较明显。如下:
functionmyfun (x: integer): integer;
function myfun( x: integer): integer;
begin
x := x * 2;
result := x;
end;
这样再用到你的第一个例子,函数和过程的意思就更明确了。
一般情况下,为了保证过程或者函数的独立性,尽量不要使用引用传递,推荐使用值传递,如果该实现部分的调用都用值传递相当于将x定义为实现部分的全局变量了,这对设计健壮的代码是有害的。当然在某些情况下使用引用传递更简捷方便有效,如果没有交叉冲突,未偿不可。
回复 引用
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/