b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

pascal 视频教程_pascal和basic_pascal选择排序(63)

电脑杂谈  发布时间:2016-12-28 07:02:37  来源:网络整理

而另一方面,变量参数就像一个指针而不是一个拷贝,当程序返回调用者时,在函数或过程体中对它的改变将被保留,(仅仅)参数名本身超出了作用域。

即使同一个变量被传给两个或多个参数,也不会创建它的拷贝,这通过下面的例子说明。

procedure AddOne(var X, Y: Integer);

begin

X := X + 1;

Y := Y + 1;

end;

var I: Integer;

begin

I := 1;

AddOne(I, I);

end;

这些代码执行后,I的值是3。

如果例程声明了一个var参数,你必须给它传递一个能被赋值的表达式,也就是一个变量、类型化常量(typed constant,在{$J+}状态下)、dereferenced指针、字段或者索引变量(

例子中,DoubleByRef(7)会产生错误,而DoubleByValue(7)是合法的。

索引以及指针引用被当作var参数时,在例程执行之前它们会被计算(一次)

Constant parameters(常量参数)

一个常量参数(const)就像一个局部常量或者一个只读变量,常量参数和数值参数类似,但在过程或函数中你不能给常量参数赋值,也不能把它当作变量参数传给另一个例程。

- 88 - indexed variable)。在前面的。 当把一个对象引用当作 (但是,

Procedures and functions

常量参数时,你仍然可以修改对象的属性。)

使用const允许编译器对结构类型和字符串类型的参数做代码优化,也防止不小心把一个参数通过引用传给另一个例程。

这里的例子是SysUtils单元中的CompareStr函数:

function CompareStr(const S1, S2: string): Integer;

因为S1和S2在CompareStr中没有被修改,它们可以被声明为常量参数。

Out parameters(Out参数)

Out参数和变量参数类似,通过引用传递。但是,当使用out参数时,传给例程的引用参数的初始值被忽略。out参数只是为了输出,也就是说,它告诉函数或过程在哪里存储输出,但不提供任何输入。 比如,考虑过程头声明

procedure GetInfo(out Info: SomeRecordType);

当你调用GetInfo时,你必须给它传递一个SomeRecordType类型的变量:

var MyRecord: SomeRecordType;

...

GetInfo(MyRecord);

但你不使用MyRecord给GetInfo传递任何值,MyRecord只是一个容器,你希望GetInfo用它存储得到的信息。The call to GetInfo immediately frees(释放还是清零?) the memory used by MyRecord, before program control passes to the procedure.

out参数经常用在分布式对象模型中,比如COM和CORBA。而且,当向函数或过程传递未初始化的变量时,你应当使用out参数。

Untyed parameters(无类型参数)

当声明var、const和out参数时,你可以省略类型说明(数值参数必须指定类型)。比如,

procedure TakeAnything(const C);

声明一个叫做TakeAnything的过程,它可以接受任何类型的参数。当你调用这样一个例程时,你不能向它传递numeral or untyped numeric constant。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-63.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 吕许营
      吕许营

      那么你就得听

    • 王有鹏
      王有鹏

      必将来犯之敌全部葬送于南海海域

    热点图片
    拼命载入中...