例2:演示向例1申请得到的几个指针执行写入及读取数据的操作.
Marshal.WriteInt32(tpObject1, 0, Convert.ToInt32(77)) ’向ti32Test变量指向的地址写入32位整数77
MsgBox("现在ti32Test的值为:"ti32Test) ’因为变量存储地址的数据已改为77,所以显示为77
’以下这句之所以可行 , 因为ti32Test是32位整数,而tpObject指向的tabytTest数组刚好有4个元素
’而每一个byte元素都占用8位,合起来就是32位,和ti32Test占用的空间一样 。这就印证了前面提’
’到的net中指针没有指向类型的说明 。
Marshal.WriteInt32(tpObject, 0, ti32Test)
’以下代码再将tabytTest字节数组的内容理解为一个int32整数,
’并将值赋值给tudtTest结构中的int32元素
’我们使用Marshal.OffsetOf(GetType(DEFUDT_Test), "i32a").ToInt32以取得i32a元素在结构中的内存偏移位置
’所以New IntPtr(tpObject2.ToInt32 + Marshal.OffsetOf(GetType(DEFUDT_Test), "i32a").ToInt32)就临时产生了
’一个指针并指向i32a所在的内存地址(, 这个方法也说明了指针可以以字节为单位进行加减计算以指向合适的变量 。
’Marshal.ReadInt32的作用是从指针中读取一个32整数 。
Marshal.WriteInt32(New IntPtr(tpObject2.ToInt32 + Marshal.OffsetOf(GetType(DEFUDT_Test), "i32a").ToInt32), _
0, Marshal.ReadInt32(tpObject))
’这儿可以将字节数组的内容复制到真正的结构中
MsgBox(Marshal.OffsetOf(tudtTest1.GetType, "i32a").ToInt32)
tudtTest1 = CType(Marshal.PtrToStructure(tpObject2, GetType(DEFUDT_Test)), DEFUDT_Test)
MsgBox("结构tidtTest1中i32a元素的值为:"tudtTest1.i32a) ’此处将显示刚赋的值77
vb.net中指针该怎么定义 , 怎么使用 , 跟C语言指针有什么区别 。vb.net中没有指针概念vb.net定义指针,也不能定义vb.net定义指针 , 也不能使
关于vb.net定义指针和vb中文件指针指向文件尾的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 不开机怎么格式化硬盘,怎么不开机格式化c盘
- 手机老是自己懂事为什么,手机突然自动
- flutter太难用,flutter用的多吗
- 直播停播请假文案,直播停播公告怎样写
- php中数据求和 php累加求和
- go作为黑客语言,黑客一般学什么语言
- 下载卡车模拟器,下载卡车模拟器破解版
- vb.net定义list vbnet listview
- 如何运作营销活动,企业如何开展营销活动