これ、よくある誤解なんですよね!
配列、文字列、構造体を関数に渡す際はポインター(
ByRef)で渡します。内容の転送は行ないません。
ByValでポインターを渡す事は
ByRefと同じです。
数値型を
ByVal渡す際は、内容を転送するのでローカル変数を変更しても呼び出し元に影響を与えません。
(ほとんどの言語で同様に動作すると思います。)
引用:
TestBP = calloc(64) ' いい加減
'' TestBP = MemoryAddress
lstrcpy(TestBP, "ActivBasicByValFunction_Test")
Ret = Check_A(TestBP)
'' 渡すのは、TestBPのMemoryAddress
free(TestBP)
Debug ' No.2 ← ← ←
End
Function Check_A(ByVal FunTestBP As BytePtr) As BytePtr
'' FunTestBPとTestBPは同じMemoryAddress
FunTestBP[10] = 0
Debug ' No.1 ← ← ←
Check_A = FunTestBP
'' 返すアドレスは、TestBPと同じMemoryAddress
End Function