这个语法int *是什么意思?

时间:2013-11-20 01:29:12

标签: c# declaration value-type

我发现在某些地方变量声明如private int* myint ; 我不太确定这个语法中的*字符是什么的, 有人可以解释为什么这个*字符在变量声明中与数据类型一起使用?

5 个答案:

答案 0 :(得分:5)

int*声明指向int类型的指针。 C#支持不安全上下文中的指针。我们可以通过两种不同的方式使用unsafe关键字。它可以用作方法,属性和构造函数等的修饰符。例如:

using System;
class MyClass
{
   public unsafe void Method()
   {
      int x = 10;
      int y = 20;
      int *ptr1 = &x;
      int *ptr2 = &y;
      Console.WriteLine((int)ptr1);
      Console.WriteLine((int)ptr2);
      Console.WriteLine(*ptr1);
      Console.WriteLine(*ptr2);
   }
}
class MyClient
{
   public static void Main()
   {
      MyClass mc = new MyClass();
      mc.Method();
   }
} 

关键字unsafe也可用于将一组语句标记为不安全,如下所示:

using System;
class MyClass
{
    public void Method()
    {
    unsafe
    {
        int x = 10;
        int y = 20;
        int *ptr1 = &x;
        int *ptr2 = &y;
        Console.WriteLine((int)ptr1);
        Console.WriteLine((int)ptr2);
        Console.WriteLine(*ptr1);
        Console.WriteLine(*ptr2);
    }
    }
}
class MyClient
{
    public static void Main()
    {
        MyClass mc = new MyClass();
        mc.Method();
    }
}

参考:Pointers in C#

答案 1 :(得分:1)

它声明一个指向整数的指针。

请参阅示例:http://boredzo.org/pointers/以获得更深入的解释。

答案 2 :(得分:1)

int是一种值类型。 int*pointer type。完全不同的概念。

如果您不使用不安全的代码,则不需要使用指针类型。

答案 3 :(得分:1)

它表示指向变量的指针。以下是通过指针获取和更新变量的示例。

public class Program
{
    public static unsafe void Main(string[] args)
    {
        int foo = 10;
        int* fooPointer = &foo; //get the pointer to foo
        Console.WriteLine(foo); //here we can see foo is 10

        *fooPointer = 11; //update foo through the pointer
        Console.WriteLine(foo); //now foo is 11
    }
}

答案 4 :(得分:0)

它创建一个指针变量。意味着变量指向内存中的位置。

http://msdn.microsoft.com/en-us/library/y31yhkeb(v=vs.110).aspx