怎樣才能使參數即可傳入又可傳出

mylovexs 2002-10-23 11:26:36
函數需要一參數即可傳入又可傳出,請指教...
...全文
33 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
墨梅无痕 2002-10-25
  • 打赏
  • 举报
回复
在Delphi版本中使用的Object Pascal总共有三种参数传递的方式:
(A) procedure Proc(const para: DataType);
(B) procedure Proc(para: DataType);
(C) procedure Proc(var para: DataType);
(以上DataType为简单类型,不是类类型)

采用(A)的方式,则参数para仅仅是传入一个值,参数para在过程(函数)Proc内是不能改变值的,更不能携带返回值。
采用(B)的方式,参数para也是传入一个值,但这个参数在Proc过程(函数)体内是可以改变值的,不过他不会返回任何改变的值。
(A)、(B)全部是值参传递。

采用(C)的方式,则是参数的引用传递方式,它可以在过程(函数)Proc体内改变它的值,并且返回给调用到地方。

//------------------------------------------------------------------
如果上述DataType是类类型的,那么你几乎看不到象如下的用法:
procedure Proc(const AClass: ClassType);

因为这样做几乎没有意义,你仍然可以修改AClass的字段、属性,并成功的返回这些改变,因为AClass本质上是指针类型的;另外,绝大多数情况下,我们是不会改变AClass的值的。
当然,如果你使用了const,则结果会和(A)中的原则一样的;如果使用(B)或(C)的原则,那么结果采用(B)、(C)中阐述的原则。
最好不要使用var关键字,如果控制不好,这会产生严重的问题!

//------------------------------------------------------------------
置于out关键字,这是Delphi为了使用接口的特性而加入的符和IDL(Interface Definition Language),这个关键字在编写COM、CORBA时非常又用。
fangchangjiang 2002-10-24
  • 打赏
  • 举报
回复
使用var的参数传递方式。
不能使用out的参数传递方式。
jiaclassmate 2002-10-23
  • 打赏
  • 举报
回复
在参数前面加上 var 关键字,使它成为实参
zwjchina 2002-10-23
  • 打赏
  • 举报
回复
var 和out
function funname(var Value: Integer): Integer;

function funname(out Value: Integer): Integer;

2者有点区别
vsice 2002-10-23
  • 打赏
  • 举报
回复
使用指针,即地址传递.
foreveryday007 2002-10-23
  • 打赏
  • 举报
回复
function XXX(var a:string): string;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧