我在 msdn 上发现了以下代码:
unsafe static void SquarePtrParam (int* p)
{
*p *= *p;
}
unsafe static void Main()
{
Point pt = new Point();
pt.x = 5;
pt.y = 6;
// Pin pt in place:
fixed (int* p = &pt.x)
{
SquarePtrParam (p);
}
// pt now unpinned.
Console.WriteLine ("{0} {1}", pt.x, pt.y);
}
我在想,我们在SquarePtrParam
函数中直接访问指针,它是否从调用方法继承了数组是固定的信息?
为什么我们不需要在SquarePtrParam
中显式设置它为fixed
?
我猜我需要一些关于这个fixed
语句的解释。