zoukankan      html  css  js  c++  java
  • C# 获取变量的指针(IntPtr)

     1. 获取数组的指针(IntPtr)

    通过Marshal.UnsafeAddrOfPinnedArrayElement(Array,Int32)方法获得一个数组的第某个元素的内存地址。

    Array是数组,Int32是元素的索引,第一个元素是0。

    例如:

    int[] ary;

    Intptr inp=Marshal.UnsafeAddrOfPinnedArrayElement(ary,0);

    Console.Writleline(inp.Tostring());//输出的就是一串数字,就是内存地址。

    内存地址以字节为单位,第一个元素地址为n,第二个为n+数据类型的字节数。int32是4个字节,那么元素地相邻址之间差4。

    2.获取某个变量的指针

    这里就要用到C#中的指针,用unsafe {}关键字,并设置【项目属性】-【生成】-可以执行不安全代码.

    具体详细信息见:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/unsafe-code-pointers/

    例如:

    int ad;

    unsafe

    {

    int* p=&ad; //建立指针P,指向变量ad

    Console.Write((int)p); //ad的内存地址

    Console.Write(*p); //引用p指向的数据,即ad

    IntPtr op=new IntPtr((int)p);//构造c#类型的指针

    Console.Write(Marshal.ReadInt32(op));//输出的是变量ad的值

    }

    //跟指针p相关的变量只能出现在unsafe{}内部,外部无法使用

     

  • 相关阅读:
    块级元素和内联元素
    cookie和session 区别
    hihernate一对多关联映射
    --查询50到80行数据
    单表查询
    表空间 用户
    进程遍历模块遍历
    字符转换函数
    控件综合2
    清理文件2
  • 原文地址:https://www.cnblogs.com/beforeluck-shang/p/8370873.html
Copyright © 2011-2022 走看看