回 帖 发 新 帖 刷新版面

主题:关于forward命令

大虾们能给小弟简要的说说forward命令命令的作用吗?

回复列表 (共5个回复)

沙发

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),有没有终止条件。

板凳


感谢你详细的回答,我还想问:为什么不直接把f2写在f1前??这样不更直接?

3 楼

简单说是这样的。f1想调用f2,那么就把f2放前面。放的位置调一调,通常能解决这一麻烦。

但假如:
在f1里想调用f2,同时在f2里又想调用了f1,哪个写在前面?都不合适。
(当然这种“递归调用”可能你会用不到。)


(^_^)

4 楼

所以就要用forward了?嗯,是不错
小声说一句,再编一个和f2一样的f3也可以啊。。。。。。
不要骂我

5 楼

能交个朋友吗??我的QQ是68273053,我很想交一些编程友,呵呵!!!我每天下午放学都会来学校附近的网吧编一段或来这问问题~~没办法,菜鸟,不懂的比较多,在学校都自学,不懂了找老师有点麻烦,只好来这让大家帮帮忙了!!!呵呵~很高兴能交你做朋友!!!(你加我的时候能注明一下是 编程爱好者论坛  的 jtchang 吗??)你不介意交个高中生做朋友吧??

我来回复

您尚未登录,请登录后再回复。点此登录或注册