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

    #region 使用指针检索数据值
    //class program
    //{
    //    // 1、项目属性勾选“允许不安全代码”
    //    // 2、使用unsafe 修饰符
    //    // 这里是将整个Main方法声明为不安全代码
    //    //static unsafe void Main()
    //    static void Main()
    //    {
    //        // 当代码段被 unsafe 修饰符标记时,C# 允许该代码段中的函数使用指针变量,
    //        // 故使用了指针变量的代码块又被称为不安全代码或非托管代码。
    //        int var = 20;
    
    //        // 将部分代码声明为不安全代码
    //        unsafe
    //        {
    //            int* p = &var;
    //        }
    //    }
    
    //    public unsafe void swap(int* p, int* q)
    //    {
    //        int temp = *p;
    //        *p = *q;
    //        *q = temp;
    //    }
    //}
    #endregion
    
    #region 指针可以作为方法中的参数
    // // using System;
    // namespace UnsafeCodeApplication
    // {
    //     class TestPointer
    //     {
    //         public unsafe void swap(int* p, int* q)
    //         {
    //             int temp = *p;
    //             *p = *q;
    //             *q = temp;
    //         }
    //         public unsafe static void Main()
    //         {
    //             TestPointer p = new TestPointer();
    //             int var1 = 10;
    //             int var2 = 20;
    //             int* x = &var1;
    //             int* y = &var2;
    //             Console.WriteLine("Before Swap: var1:{0}, var2: {1}", var1, var2);
    //             p.swap(x, y);
    //             Console.WriteLine("After Swap: var1:{0}, var2: {1}", var1, var2);
    //             Console.ReadKey();
    //         }
    //     }
    // }
    
    #endregion
    
    #region 使用指针访问数组元素  fixed()
    namespace UnsafeCodeApplication
    {
        //using System;
        class TestPointer
        {
            public unsafe static void Main()
            {
                int[] list = { 10, 100, 200 }; 
    
                // !!引用类型 都需要fixed,防止垃圾回收导致内存地址变化
                fixed (int* ptr = list)
                /* let us have array address in pointer */
                for (int i = 0; i < 3; i++)
                {
                    Console.WriteLine("Address of list[{0}]={1}", i, (int)(ptr + i));
                    Console.WriteLine("Value of list[{0}]={1}", i, *(ptr + i));
                }
                Console.ReadKey();
            }
        }
    }
    #endregion
  • 相关阅读:
    MYSQL数据库常用语句
    node.js(http协议)
    web 后端规范与思想
    linux系统下开启一个简单的web服务
    linux基础学习之软件安装以及常用命令(三)
    Vue如何使用动态刷新Echarts组件
    linux基础学习之软件安装以及常用命令
    linux基础学习
    浅谈FIle协议与Http协议及区别
    vueJs的简单入门以及基础语法
  • 原文地址:https://www.cnblogs.com/jshchg/p/11662163.html
Copyright © 2011-2022 走看看