C# 获取变量的指针(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# 获取变量的指针(IntPtr)的更多相关文章
- 从汇编看c++中指向成员变量的指针(二)
在从汇编看c++中指向成员变量的指针(一)中讨论的情形没有虚拟继承,下面来看看,当加入了虚拟继承的时候,指向成员变量的指针有什么变化. 下面是c++源码: #include <iostream& ...
- C语言基础知识点整理(函数/变量/常量/指针/数组/结构体)
函数 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...
- C语言中数组变量和指针变量
指针变量为什么需要类型? 数组变量和指针变量在使用sizeof时不同,sizeof(数组变量)是数组长度,sizeof(指针变量)是存储int的字节长度4或者8(64bit). 数组变量在参数传递中, ...
- C# 获取变量或对象的栈与堆地址
C# 获取变量或对象的栈与堆地址 来源 https://www.cnblogs.com/xiaoyaodijun/p/6605070.html using System; using System.C ...
- <javaScript>谈谈JavaScript中的变量、指针和引用
1.变量我们可能产生这样一个疑问:编程语言中的变量到底是什么意思呢?事实上,当我们定义了一个变量a时,就是在存储器中指定了一组存储单元,并将这组存储单元命名为a.变量a的值实际上描述的是这组存储单元中 ...
- 谈谈JavaScript中的变量、指针和引用
1.变量 我们可能产生这样一个疑问:编程语言中的变量到底是什么意思呢? 事实上,当我们定义了一个变量a时,就是在存储器中指定了一组存储单元,并将这组存储单元命名为a.变量a的值实际上描述的是这组存储单 ...
- JavaScript使用构造函数获取变量的类型名
在JavaScript中,如何准确获取变量的类型名是一个经常使用的问题. 但是常常不能获取到变量的精确名称,或者必须使用jQuery 中的方法,这里 我通过 typeof ,jQuery.type 和 ...
- 【转】 C# 小技巧之获取变量名称
link: http://www.cnblogs.com/gongy/p/lm-2015-04-03.html 今天在自我规范程序设计的时候,变量名匹配字符串来自配置文件,网上找了一会儿发现也有朋友在 ...
- JS魔法堂:函数重载 之 获取变量的数据类型
Brief 有时我们需要根据入参的数据类型来决定调用哪个函数实现,就是说所谓的函数重载(function overloading).因为JS没有内置函数重载的特性,正好给机会我们思考和实现一套这样的机 ...
随机推荐
- P1028 数的计算( 记忆剪枝 )
题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数 n ): 先输入一个自然数 n(n≤1000),然后对此自然数按照如下方法进行处理: 不作任何处理; 在它的左边加上一个自然数,但该自然数 ...
- Docker 下部署hadoop集群
一.主机规划 3台主机:1个master.2个slaver/worker ip地址使用docker默认的分配地址: master: 主机名: hadoop2.ip地址: 172.17.0.2 slav ...
- CSS3之border-image的使用
最近,我在项目开发中遇到这样的问题. 要给这个tab的底部的蓝线左右加上圆角. 然而,这个元素实际如上图所示,只是active的时候加了个underline的类,蓝线并没有单独的html. 若给这个s ...
- 软件分享大会之Bonny使用感想
近日大一期末临近,处在计算机大类专业的我也即将面临专业分流.在软件工程这个新的开始前,未来的系主任组织了一次软件分享会,通过大二.大三学生向大一的我们的作品展示,提前让我们了解自制软件如现流行软件的不 ...
- Android_小账本小结
登录界面:支持登录.注册以及游客登录,单纯的小账本的话其实用不到这些个登录,单纯为了巩固学习知识. 尚未部署到服务器,账号等数据暂时保存在本地数据库中. 游客登陆:游客登录会直接跳到主页中,不影响使用 ...
- spark-sklearn TypeError: 'JavaPackage' object is not callable
from sklearn import svm, datasets from spark_sklearn import GridSearchCV from pyspark import SparkCo ...
- c# 调用c++类库控制usb继电器
网上找不到调用此类库的文章,简单写一下,以备后用. 下面是封装后的调用c++类库的类 public class UsbRelayDeviceHelper { /// <summary> / ...
- KVM命令--使用篇(1)
1. KVM常见使用命令: 1.1 查看命令 列出所有虚拟机 virsh list --all 显示虚拟机信息 virsh dominfo vm_name 显示虚拟机内存和cpu使用情况 virsh- ...
- 虚拟机floppy0
网上搜索方法是:删除该虚拟机的软盘即可. 具体原因还不知道,以后再补上原因
- JavaScript实现常见的数据结构
使用JavaScript实现栈.队列.链表.集合等常见数据结构.可能会有点用? 水 栈(Stack) 实际上JavaScript的Array本身就具有栈和队列的特性,所以我们可以借助Array来实现它 ...