条位请教下面两个函数有什么不同

program_dog 2002-09-13 09:04:29
请条位帮助下面两个函数有什么不同:
function aa(str:string):string;
function aa(var str:string):string;

procedure bb(ob:Tobject);
procedure bb(var ob:Tobject);
...全文
43 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangyugw 2002-09-14
  • 打赏
  • 举报
回复
dll如果这么传递会怎么样呢。
kaidu 2002-09-14
  • 打赏
  • 举报
回复
这是Object Pascal中的值参和变参的区别,值参只传递值,变参是传地址,也就是说,当你在函数或过程中改变了值参的值是,主调函数中实际参数值不便,而若是变参,就要变。
AV_15 2002-09-14
  • 打赏
  • 举报
回复
按参数传递时,当你在函数内部改变变量的值不会影响到外部的那个变量,而按值传递就会改变了!
AV_15 2002-09-14
  • 打赏
  • 举报
回复
应该叫: 按参数传递 和 按值传递 吧!
lovedandan 2002-09-14
  • 打赏
  • 举报
回复
function aa(str:string):string;
传值,如果在函数体内对str作了改变,不会影响到外部函数中str的值
function aa(var str:string):string;
传引用,如果在函数体内对str做了改变,外部函数中str的值会同步变化
Linux2001 2002-09-14
  • 打赏
  • 举报
回复
第一个是传值调用,第二个是传址调用
chenooo 2002-09-14
  • 打赏
  • 举报
回复
str:string 形参,只传递值。
var str:string 是变参,有值返回,在函数中改变了,str的值也会变。
dupenf 2002-09-13
  • 打赏
  • 举报
回复
var 在此函数中可以改变此参数的至.
没有的话.至传递至了
ZHUIG 2002-09-13
  • 打赏
  • 举报
回复
很简单,在function aa(str:string):string;中str是一个常量(在函数执行过程中str的值不能变化)。
而function aa(var str:string):string;的str在程序的执行中值是可以变化的。就好象一个返回值。如
function aa(var str:string):string;
begin
str := Str + str;
end;

var
ss,dd:String;
begin
dd := 'aa';
aa(dd);//第二个
ss := dd;
end;
那么ss值是'aaaa'!
hacking 2002-09-13
  • 打赏
  • 举报
回复
function aa(str:string):string;
中的STR是形式参数,只传递值,
function aa(var str:string):string;
中的STR如果在函数中改变了,那么所传的参数值也改变了

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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