我发现在某些地方变量声明如private int* myint ;
我不太确定这个语法中的*
字符是什么的,
有人可以解释为什么这个*
字符在变量声明中与数据类型一起使用?
答案 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();
}
}
答案 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