悬赏分:0 - 离问题结束还有 7 天 22 小时
dim a,b
function abc(byval a,byref c)
a=a+1
b=b+1
c=c+a+b
abc=a*2
end function
a=5:b=10
response.write abc(a,b)
response.write ":" & a & ":" & b
这个输出结果是什么?运行步骤?
这个程序里面的c好像就没有用啊!
问题补充:输出的结果是:12:5:28
????????????????????????????????????????、????
"*********************************************************
12:6:11
回答者:maize09 - 江湖新秀 五级 9-20 10:42
因为byref是将函数里面的算完的c值返回
c=(a+1)+(b+1)+c
即abc(a,b) 中的b
这样应该输出12:5:27
怎么会是12:5:28 呢
你再好好看看吧
回答者:yankun123316 - 魔法师 四级 9-25 08:39
"*********************************************************
<%
dim a,b
function abc(byval a,byref c)
a=a+1'a = 6
response.write "a:"& a &"<br>"
b=b+1 'b = 10 + 1 = 11
response.write "b:" & b &"<br>"
'***************************************************
c=c+a+b '(c = 11 + 6 +11 = 27) 这里为什么 c = 11 + 6 + 11呢? 因为byref c 是按地址传递,而abc(a,b) 这个b的值在上一步已经赋值得11,byref c 是
直接取b对应地址上的值
'那么当然 abc(byval a,byref c) 这个c也等于对应地址的b的值得
'如abc(byval a,byref c) 改为 abc(byval a,byval c) 那么结果就是 12 : 5 : 27
'你可看看byval与byref的区别。按值传递与按地址传递
response.write "c:" & c &"<br>":response.end'这里的C已经是28了
'***************************************************
abc=a*2 'abc = 6*2=12
end function
a=5:b=10
response.write abc(a,b)
response.write ":" & a & ":" & b
%>
参考资料:www.papozhe.com
回答者:papozhe - 秀才 三级 9-27 10:07