曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 2982|回复: 0
打印 上一主题 下一主题

传值(byval) 与 传址(byref)

[复制链接]

716

主题

734

帖子

2946

积分

超级版主

Rank: 9Rank: 9Rank: 9

积分
2946
跳转到指定楼层
楼主
发表于 2013-4-4 12:19:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在 ASP 中,给函数传递参数的方式默认是传址,而不是传值。使用下面的测试代码来说明:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<[email=%@LANGUAGE=]%@LANGUAGE="VBSCRIPT[/email]" CODEPAGE="65001" %>
<%
dim a
a = 10
function change_val( n )
n = n + 1
response.Write("在函数内 n = " & n & "<br />")
end function
response.Write("未调用 change_val() 函数前, a 的值为:" & a & "<br />")
call change_val(a)
response.Write("调用 change_val() 函数后, a 的值为:" & a)

%>
</body>
</html>
输出结果:

由此可见,默认情况下就是用传址的方式来传递的。如果显示声明传址方式,那么可以使用 byref 关键字,如:function change_val( byref n ) 。在程序里是用 call 来调用函数的。也可以不用 call ,而直接写成 change_val a 这种方式。需要注意的是,我们不能写成 change_val(a) ;将参数 a 用括号括起来后,相当于按值来传递。

如果需要按值来传递,那么就要使用 byval 关键字,比如:function change_val( byval n ) 。按照按值传递的方式,再运行一下上面的程序,会得到结果:
未调用 change_val() 函数前, a 的值为:10
在函数内 n = 11
调用 change_val() 函数后, a 的值为:10

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 06:35 , Processed in 0.066294 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表