参数传递(二)(按值传递与按址传递)

过程和函数的参数传递分为两种:一种是按值传递,一种是按址传递。

1、按值传递

在参数的传递过程中实参复制一份给形参所代表的临时存储单元,实参和形参的内容保存在不同的内存地址中,过程和函数中改变形参的内容值时,只是形参的内容发生改变,不会影响实参的内容。

下面将实参A和B的值赋值一份给形参X和Y,X和Y的值改变,而实参是不会改变的,如下

 function myfunc(x,y:integer):interer;    //x和y为形参

 

begin

x:=x+1;

y:=y+1;

result x+y;

end;

 

 

procedure tform1.button1.click(sender:tobject);

var

A,B:integer;     //实参A和B

begin

a:=10;

b:=10;

showmessage(inttostr(myfunc(a,b)));

end;

 

程序运行结果:22

形参X和Y都在原来的基础上增加了1,而实参还是10,并没有改变

2、按址传递

在参数传递过程中,实参将保存内容的内存地址传递给形参,形参与实参指向同一个内存地址,形参就像实参的别名一样,当形参内容发生变化是,实参的内容也立即随着变化,如下:

fucntion myfunc(var a,b:integer):integer  

begin

a:=a+1;

b:=b+1;

end

 

procedure tform1.button1.click(sender:tobject);

var

x,y:integer;

begin

showmessage(inttostr(myfunc(x,y)));

showmessage(inttostr(x+y));

end;

结果为22,22

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值