• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#获取变量的指针(IntPtr)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 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{}内部,外部无法使用

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#3.0Cookbook:二、字符与字符串处理(1):判断字符类型发布时间:2022-07-10
下一篇:
C#正则表达式的使用详解发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap