C# 如何在从函数返回的数组中保留指向元素的指针?
我有一个大数组。我将这个数组赋给一个函数,该函数返回指向数组中特定元素的指针。或者,至少这是应该发生的事情。相反,我在函数返回后得到的指针是0x0000。什么C# 如何在从函数返回的数组中保留指向元素的指针?,c#,arrays,pointers,C#,Arrays,Pointers,我有一个大数组。我将这个数组赋给一个函数,该函数返回指向数组中特定元素的指针。或者,至少这是应该发生的事情。相反,我在函数返回后得到的指针是0x0000。什么 int* getPtr(int[] array) { //there is guarenteed no indexOutOfBounds... fixed(int* p = array[4]) return p; } Main() { int[] massive = new int[10]; i
int* getPtr(int[] array)
{
//there is guarenteed no indexOutOfBounds...
fixed(int* p = array[4])
return p;
}
Main()
{
int[] massive = new int[10];
int* p = getPtr(massive);
Console.WriteLine((int)p); //... address is 0... arg
}
我会先尝试给数组一些值。如果你只是写出一个指向内存中没有数据的位置的指针,那么你得到的数据就没有真正的保证了 由fixed执行的固定仅持续到受控语句或块的结尾。因此,您的代码相当于:
fixed(int* p = array[4]) {
return p;
}
函数返回后,固定不再有效。发件人:
执行语句中的代码后,所有固定变量都将取消固定并接受垃圾收集。因此,不要指向固定语句之外的变量
那么,我是否也应该在Main中修复数组?当然,这听起来似乎是一种可行的方法。如果你那样做会发生什么?