(1)什么是函数实参与形参"传值"和"传址方法"+?单个变量实参如何实现传址?
1个回答
关注
展开全部
咨询记录 · 回答于2021-10-16
(1)什么是函数实参与形参"传值"和"传址方法"+?单个变量实参如何实现传址?
形参和实参自定义函数中有形参和实参这两种概念,怎么来理解呢?先来看下面的例子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和按照值传值ByValByRef (默认模式)通俗点讲就是系统直接把实参的地址传给了形参。由于形参现在和实参共享一个地址,在函数处理过后,实参的数值会相应的变化。例如: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值为3ByVal(传递数值)如果使用需要特殊指定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
已赞过
评论
收起
你对这个回答的评价是?