原则上,在C#中最好不用指针,更安全也更方便,但是有时使用指针是速度更快,这里简单介绍一下使用指针访问数组。
先在设置里允许可以使用不安全代码:
在使用指针时先在函数返回类型前声明该函数实际unsafe的,与C++不同,C#不能直接定义指针,只能放在fixed中,并且指针的有效域也只能在fixed程序段中。写了一小段代码访问数组元素,代码如下。arr1与arr2是两个整数数组,在fixed程序段中依次访问其中的元素。注意:使用指针是有风险的,与正常访问不同,系统少做了一些校验,这也是指针较快的原因,除非对效率有极高要求还是不建议使用指针的。指针的使用与C&C++类似(一般要开指针的对这两种语言都很熟,我就不班门弄斧了)。
1 class Program 2 { 3 static unsafe void Main(string[] args) 4 { 5 int[] arr1 = {1,2,3,4,5}; 6 Console.WriteLine("arr1:"); 7 fixed (int* p = &arr1[0]) 8 { 9 //一维数组利用指针访问元素 10 for (int i = 0; i < 5; i++) 11 { 12 Console.Write("->"); 13 Console.Write(*(p + i)); 14 } 15 } 16 17 Console.WriteLine(); 18 19 int[,] arr2 = {{1,2,3},{4,5,6},{7,8,9}}; 20 Console.WriteLine("arr2:"); 21 fixed (int* p = &arr2[0,0]) 22 { 23 // 二维数组也可以顺序访问,同Cpp 24 for (int i = 0; i < 9; i++) 25 { 26 Console.Write("->"); 27 Console.Write(*(p + i)); 28 } 29 } 30 31 Console.ReadKey(); 32 } 33 }
最后是运行结果:
Thank you for your time and have a good day!