Visual Basic .NET中的C样式指针

use*_*628 1 c vb.net pointers

一段时间以来,我一直在研究Visual Basic .NET中的C样式指针。我遇到过http://support.microsoft.com/kb/199​​824?wa=wsignin1.0,但是我不知道这是正确的方法还是如何应用它。我已经在c语言中使用程序编写了一个简单的指针,并且我希望它在必要时将一行一行转换为带有注释的Visual Basic。这是C:

int main()
{
    int *myNumber=3; //the * means it's a pointer

    doubleIt(*myNumber); //we use the void, the * means it returns a value not address
    printf("%d",myNumber); //we print the variable

    return 0; //we terminate the function
}

void doubleIt(int input)
{
    input*=2; //double the input
}
Run Code Online (Sandbox Code Playgroud)

Ton*_*ion 5

您的C代码存在一些问题,其中一个是这样的:

int *myNumber=3; //the * means it's a pointer  
Run Code Online (Sandbox Code Playgroud)

您必须先为它分配内存,才能为这样的指针分配一个值。

因此,您将执行以下操作:

int* myNumber = malloc(sizeof(int));
*myNumber  = 3;
free(myNumber);
Run Code Online (Sandbox Code Playgroud)

VB.NET没有指针的概念。一切(即every Object)都是一个引用,这与不使用Interop所获得的指针差不多。如果需要进行互操作IntPtr,则可以使用一种类型来表示指针类型。

您的VB.NET程序可能看起来像这样:(请原谅我,如果语法不完全正确,已经有一段时间了)

Sub Main
    Dim myNumber As Integer = 3
    doubleIt(myNumber)
    Console.WriteLine(myNumber)
End Sub

Sub doubleIt(ByRef val As Integer)
    val *= 2
End Sub
Run Code Online (Sandbox Code Playgroud)

  • int * myNumber = 3;在将3分配给myNumber的意义上,“有效”;问题是0x00000003很可能*不是*整数(或其他任何东西)的有效地址。 (4认同)