下载此文档

delphi参数传递.doc


文档分类:IT计算机 | 页数:约7页 举报非法文档有奖
1/7
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/7 下载此文档
文档列表 文档介绍
delphi 参数传递 delphi 参数传递参数传递声明/ 实现一个过程使用的参数称为形式参数( 简称形参), 调用过程时传入的参数称为实际参数(简称实参)。{ Info 是形参} procedure ShowInfo(Info: String); begin ShowMessage(Info); end; var S: String; begin S := 'lxpbuaa'; {S 是实参} ShowInfo(S); end; 参数传递分两种:按值( by val )和引用( by ref ) 。这两种方式的本质区别是: 按值传递时,形参和实参是两个变量,它们开始时的值是相同的,即实参的数据被拷贝一份传递给了形参。所以此时, 形参的改变不会影响到实参。引用传递时, 形参和实参是同一个变量, 可以将它们之一看做是另一个的别名。所以此时,形参改变时,实参跟着改变。默认情况下, 参数是按值传递的, 传递的是数据拷贝; 如果加了 var 前缀,则成了引用传递。我们看如下例子: procedure (I: Integer); { 按值传递 I} begin ShowMessage(IntToStr(Integer(***@I))); { 取得形参所在地址。你会发现它和实参地址是不同的,因为此时实参和形参是不同的两个变量} I :=I+ 1; end; procedure (var I: Integer); { 引用传递 I} begin ShowMessage(IntToStr(Integer(***@I))); { 取得形参所在地址。你会发现它和实参地址是相同的,因为此时实参和形参是同一个变量}I :=I+ 1; end; procedure (Sender: TObject); var I: Integer; begin I := 1; ShowMessage(IntToStr(Integer(***@I))); { 取得实参所在地址} ByVal(I); {I =1} Showmessage(i); {i:=1; 实参没有变} ByRef(I); {I =2} showmessage(i); {i:=2, 实参改变了} end; 按值传递的参数可以指定默认值,比如上面的 ByVal 可以是这样: procedure ByVal(I: Integer = 0); 调用它时可以省掉有默认值的参数: ByVal 。带默认值的参数必须位于参数列表的最后,如: procedure ByVal(I: Integer = 0; B: Boolean); 是不行的,应该改为: procedure ByVal(B: Boolean; I: Integer = 0); 因为默认值必须是一个常数表达式,所以 dynamic-array 、 procedural 、 class 、 class-reference 和 interface 等参数只能指定 nil 默认值;而 record 、 variant 、 file 和 static-array 等类型的参数则根本不能指定默认值。如果按值传递一个指针类型的参数,情况会变得复杂而又很有意思。此时, 实际传递的是什么呢?是实际数据的拷贝吗?不, 是指针的拷

delphi参数传递 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数7
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xxj16588
  • 文件大小0 KB
  • 时间2016-07-23
最近更新