c# 如何获取一个变量内存地址
并对他进行操作

解决方案 »

  1.   

    API
    ReadProcessMemory
    WriteProcessMemory
      

  2.   

    可以说的详细点吗>
    比如我操作指定内存的0x56000000
    位置的值该怎么做的?!
      

  3.   

    unsafe
    {
          uint* ptr = (uint*)0x56000000;
          MessageBox.Show((*ptr).ToString());
    }
      

  4.   

    需要将程序设置为unsafe状态,然后用&就可以了。步骤如下:
    1.将IDE中的配置属性->结构->unsafe设置为true;
    2.在要取内存地址的函数前用unsafe关键词修饰。
    3.用&取内存地址
      

  5.   

    namespace ConsoleApplication3
    {
        class Program
        {
            static void Main(string[] args)
            {
                //函数实现数值交换
                int a, b;
                Console.Write("请输入要交换的两个数");
                a= Convert .ToInt32 ( Console.ReadLine());
                b = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("输入需要要交换的两个数{0},{1}", a, b);
                Swap(ref a, ref  b);  // !!!注意:获取的是地址!!!!
               
                Console.WriteLine("交换后的a,b值{0},{1}",a,b);
                Console.ReadKey();
            }        private static void Swap(ref  int a,ref  int b)//传过来的是地址
            {
                int c ;
                c = a;
                a = b;
                b = c;        }        
            private static int Average(int[] array)
            {
                int agevage=0;
                int sum=0;
                for (int i = 0; i < array.Length; i++)
                {                sum+= array[i];
                    agevage  = sum / array.Length;
                }
                return agevage ; 
            }        static  int Min( params  int[] array)
            {
                int min = array [0];
                for (int i = 0; i < array .Length ; i++)
                {                if (min >array [i])
                    {
                        min = array [i];                }            }
                return min;         }
            private static int Compare(int[] arr)
            {
               int max=0;
               for (int i=0;i<arr.Length ;i++)
                {
                    
                    if (max < arr[i])
                    {
                        max = arr[i];
                       
                    }
                    
                }
               return max;
            }
            private static bool  YesNo()
            {
                Console.WriteLine("请问是否继续计算? 是Y/否N");
                string yesno = Console.ReadLine();
                if (yesno == "Y" || yesno == "y")
                {
                    return true  ;
                }
                else 
                    return false  ;
            }
         }
    }