700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 函数的形参 实参和传值方式

函数的形参 实参和传值方式

时间:2021-08-09 18:38:43

相关推荐

函数的形参 实参和传值方式

> 深入了解自定义函数

形参和实参

自定义函数中有形参和实参这两种概念,怎么来理解呢?先来看下面的例子

Function GreetUsers(UserName As String) As String GreetUsers = "welcome, " & UserNameEnd FunctionSub SayHello() Debug.Print GreetUsers("A哥")End Sub

[x] 在定义函数GreetUser()的定义中,变量UserName是一个形参— 函数完成其工作所需要的一个信息。

[x] 在下面代码中: Debug.Print GreetUsers("A哥")

我们向函数传递了一个数据”A哥”,这个值就是一个实参。实参是调用函数传递给函数的信息。

在GreetUser(“A哥”)中,将实参”A哥”传递给了函数GreetUser(),这个值被存储在形参UserName里。

函数里的形参和实参的结合有两种方式:按照地址传值ByRef和按照值传值ByVal

ByRef (默认模式)

通俗点讲就是系统直接把实参的地址传给了形参。由于形参现在和实参共享一个地址,在函数处理过后,实参的数值会相应的变化。

例如:

Function trybydefault(i As Integer) As Integeri = i 1trybydefault = iEnd FunctionSub test_function()Dim n%n = 2Debug.Print trybydefault(n)Debug.Print nEnd Sub

上面返回3,3 也就是函数处理的过程中:

n作为实参被默认按ByRef传值

被函数加1之后,n也发生了改变,因此返回的n值为3

ByVal(传递数值)

如果使用需要特殊指定ByVal

这种方法可以这么理解,函数在接到实参之后,复制了一个副本出来,供函数使用。因此实参的值最终没有变化。

Function trybydefault(byval i As Integer) As Integeri = i 1trybydefault = iEnd FunctionSub test_function()Dim n%n = 2Debug.Print trybydefault(n)Debug.Print nEnd Sub

返回3,2 也就是实参数值并未发生改变。

文章的最后,附上某位小朋友曾经提过的问题,让大家体会一下ByRef和ByVal是多么受出卷老师的喜欢,在这里要手动@野子。。。

总结一下

函数的形参和实参

ByVal和ByRef

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。