Спасибо, что прочитали это.
Я наткнулся на этот вопрос.Мы все знаем, что у 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
Спасибо за комментарии ниже, я понял, что у sub / functions есть собственный указатель.(Сэр, я не основанный на 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