在C#中,fixed
关键字用于固定变量的内存地址
fixed
语句的一般形式如下:
fixed (type* variable = expression)
{
// 代码块
}
其中,type*
表示指向类型为type
的指针,variable
是指向expression
的指针变量。在fixed
语句块中,你可以使用指针变量variable
来操作原始数据结构。
例如,以下代码演示了如何使用fixed
关键字获取整数数组的指针并修改数组元素:
using System;
class Program
{
static unsafe void Main()
{
int[] numbers = { 1, 2, 3, 4, 5 };
fixed (int* ptr = numbers)
{
for (int i = 0; i< numbers.Length; i++)
{
*(ptr + i) = *(ptr + i) * 2;
}
}
foreach (int number in numbers)
{
Console.WriteLine(number);
}
}
}
在这个例子中,我们首先创建了一个整数数组numbers
。然后,我们使用fixed
关键字获取数组的指针,并将每个元素乘以2。最后,我们使用foreach
循环输出修改后的数组元素。
需要注意的是,fixed
关键字只能在unsafe
上下文中使用,因此需要在方法或类型声明中添加unsafe
关键字。此外,fixed
关键字通常与指针操作一起使用,因此需要对指针有一定的了解。