Pascal是否支持将参数传递给函数?

时间:2012-04-10 22:31:00

标签: pascal freepascal

我是Pascal的新手,我正在尝试编写一个简单的程序,但是在函数之间传递值时遇到了麻烦。这是我的一小部分:

program numberConverter;

const
    maxValue = 4999;
    minValue = 1;

var num: integer;

function convertNumeral(number: integer):string;
var j: integer;
begin
if ((number < minValue) OR (number > maxValue)) then
    begin
    writeln(number);
    writeln('The number you enter must be between 1 and 4999. Please try again:');
    read(j);
    convertNumeral := convertNumeral(j);
    end
else 
 if (number >= 1000) then
convertNumeral := 'M' + convertNumeral(number -1000)
{more code here, left it out for space}
end;

begin
    writeln;
    writeln('Enter an integer between 1 and 4999 to be converted:');
    read(num);
    writeln;
    writeln(num);
    writeln(convertNumeral(num));
end.

我的问题是来自writeln(converNumeral(num))的值(主要是'num')没有传递给convertNumeral函数,并且想知道Pascal是否会这样做。我认为它是因为我没有声明数字是变量,但是当我这样做时,我得到一个编译错误,它无法完成第二个if语句。谢谢你的时间。

1 个答案:

答案 0 :(得分:2)

是的,值肯定会传递给函数。我保证num确实传递给convertNumeral。在该函数中,number获取num中的任何值。或许您如何观察计划的行为存在问题。

您对number所做的更改(如果有)不会反映在num中。该参数已按值传递,因此number存储num中存储的值的副本;他们是两个截然不同的变量。您可以使用var通过引用传递参数,如果这是您想要的。

convertNumeral的每次递归调用都会获得number实例,因此一旦函数返回,对number所做的更改(如果有)将不会显示给来电者。每个调用都有自己的numberj版本。