zoukankan      html  css  js  c++  java
  • C#使用指针

    原则上,在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!

  • 相关阅读:
    激活OFFICE2010时,提示choice.exe不是有效的win32程序
    Redis 学习之持久化机制、发布订阅、虚拟内存
    Redis 学习之事务处理
    Redis 学习之主从复制
    Redis 学习之常用命令及安全机制
    Redis 学习之数据类型
    Redis 学习之简介及安装
    Tomcat 虚拟主机配置
    mysql学习之权限管理
    mysql学习之主从复制
  • 原文地址:https://www.cnblogs.com/GhostZCH/p/2690701.html
Copyright © 2011-2022 走看看