主题:关于forward命令
pascaler
[专家分:150] 发布于 2006-02-17 17:42:00
大虾们能给小弟简要的说说forward命令命令的作用吗?
回复列表 (共5个回复)
沙发
jtchang [专家分:5370] 发布于 2006-02-18 09:51:00
forward:过程、函数超前定义。
pascal调用函数的规则,是写在后面的函数可以调用前面的函数(因为前面的函数先写,先看到了。),而写在前面的函数没法调用后面的函数。(还没看到后面,会被认为没定义。)
比如有两个函数按这样的顺序写的:
function f1(i:integer) : integer;
begin
……
end;
function f2(i:integer) : integer;
begin
……
end;
先看到f1,再看到f2。
在f2里可以调用f1,而f1没办法调用f2。
怎么样使得f1能调用f2?就是在f1前面,用超前定义forward。
function f2(i:integer) : integer; forward; {超前定义,写在这行以后的函数都可以调用f2}
function f1(i:integer) : integer;
begin
……
调用f2;
……
end;
function f2(i:integer) : integer; {f2的具体代码}
begin
……
end;
使用超前定义应当注意的一个问题是:
如果形成递归调用(在f1里调用了f2,同时在f2里又调用了f1),有没有终止条件。
板凳
pascaler [专家分:150] 发布于 2006-02-20 17:15:00
感谢你详细的回答,我还想问:为什么不直接把f2写在f1前??这样不更直接?
3 楼
jtchang [专家分:5370] 发布于 2006-02-20 19:30:00
简单说是这样的。f1想调用f2,那么就把f2放前面。放的位置调一调,通常能解决这一麻烦。
但假如:
在f1里想调用f2,同时在f2里又想调用了f1,哪个写在前面?都不合适。
(当然这种“递归调用”可能你会用不到。)
(^_^)
4 楼
贺天行宝 [专家分:2300] 发布于 2006-02-20 20:41:00
所以就要用forward了?嗯,是不错
小声说一句,再编一个和f2一样的f3也可以啊。。。。。。
不要骂我
5 楼
pascaler [专家分:150] 发布于 2006-02-21 17:45:00
能交个朋友吗??我的QQ是68273053,我很想交一些编程友,呵呵!!!我每天下午放学都会来学校附近的网吧编一段或来这问问题~~没办法,菜鸟,不懂的比较多,在学校都自学,不懂了找老师有点麻烦,只好来这让大家帮帮忙了!!!呵呵~很高兴能交你做朋友!!!(你加我的时候能注明一下是 编程爱好者论坛 的 jtchang 吗??)你不介意交个高中生做朋友吧??
我来回复