摘要:本文主要向大家介绍了C#编程之C# 获取变量的指针(IntPtr),通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。
本文主要向大家介绍了C#编程之C# 获取变量的指针(IntPtr),通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。
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{}内部,外部无法使用
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C#.NET频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-IT技术咨询与就业发展一体化服务 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号