首页 > 解决方案 > `Sub` 有指针吗?

问题描述

感谢您阅读本文。

我偶然发现了这个问题。我们都知道Function有指针。以这个为例:

Function TestPrint2(ByVal NameIn As String)
    TestPrint2 = NameIn
End Function

TestPrint2我们可以通过使用得到指针VarPtr(TestPrint2("Hello World!"))

我们可以将上面的代码写成Sub

Sub TestPrint1(ByRef NameOut As String, ByVal NameIn As String)
    NameOut = NameIn
End Sub

感谢以下评论,我发现子/函数确实有自己的指针。(先生,我不是基于 CS 而是基于金融)。我用这些潜艇来测试:

Function GetBaseAdd(lngadd As LongPtr) As LongPtr
    GetBaseAdd = lngadd
End Function

和这个

Sub TestGetBaseAdd()
    Debug.Print "Pointer of Sub TestPrint1 " & GetBaseAdd(AddressOf TestPrint1)
    Debug.Print "Pointer of Sub TestPrint2 " & GetBaseAdd(AddressOf TestPrint2)
    Debug.Print "Pointer receiving return from TestPrint2 " & VarPtr(TestPrint2("Hello World!"))
End Sub

标签: vba

解决方案


推荐阅读