在C#中,二维数组其实是一个以数组为元素的数组,因此可以使用指针来传递二维数组参数。以下是一个示例代码:
using System;
class Program
{
static void Main()
{
int[,] arr = new int[3, 3] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
PrintArray(arr);
}
static void PrintArray(int[,] arr)
{
unsafe
{
fixed (int* p = &arr[0, 0])
{
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
Console.Write(*(p + i * arr.GetLength(1) + j) + " ");
}
Console.WriteLine();
}
}
}
}
}
在上面的示例中,我们定义了一个二维数组 arr
,然后通过 fixed
关键字将其指针 p
固定在内存中。然后通过指针的算术运算访问二维数组的元素,并打印出数组的内容。
需要注意的是,在使用指针操作数组时,需要在代码中添加 unsafe
关键字,因为这样的代码是不安全的,可能会导致内存访问越界等问题。