当然可以的,需要System.Runtime.InteropServices 命名空间中的 Marshal 类
创新互联公司主要从事成都网站制作、网站建设、外贸网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务安多,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
Imports System.Runtime.InteropServices '这里一定要有
Public Class Form1
Public Structure m_Point
Dim x As Integer
Dim y As Integer
End Structure
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer = 50
Dim ai() As Integer = {1, 2, 3, 4, 5}
Dim pi As IntPtr = GCHandle.Alloc(i, GCHandleType.Pinned).AddrOfPinnedObject() '取得整形变量的指针
Dim pai As IntPtr = GCHandle.Alloc(ai, GCHandleType.Pinned).AddrOfPinnedObject() '取得整形数组首地址指针
MsgBox(Marshal.ReadInt32(pi, 0)) '读回整形变量指针指向的值
MsgBox(Marshal.ReadInt32(pai, 0 * 4)) '读回数组的第一个元素
MsgBox(Marshal.ReadInt32(pai, 1 * 4)) '读回数组的第二个元素
MsgBox(Marshal.ReadInt32(pai, 2 * 4)) '读回数组的第三个元素
'-----下面是结构--------------------------
Dim m_p As New m_Point
m_p.x = 100
m_p.y = 50
Dim pm_p As IntPtr = GCHandle.Alloc(m_p, GCHandleType.Pinned).AddrOfPinnedObject() '取得结构首地址指针
MsgBox(Marshal.ReadInt32(pm_p, 0 * 4)) '读回结构的第一个值
MsgBox(Marshal.ReadInt32(pm_p, 1 * 4)) '读回结构的第二个值
End Sub
End Class
是这么定义的:
数组中的第一个元素的下标称为下界,最后一个元素的下标称为上界,其余的元素连续地分布在上下界之间,且数组在内存中也是用连续的区域来存储的,所以数组每维的长度不能超过Long数据类型的最大值,即264—1=263。
把VB.NET数组当作一个对象来处理,就意味着数组类型是单个引用类型,数组变量包括指向构成数组元素、数组维和数组长度等数据的指针,数组之间互相赋值但仅仅是在相互复制指针,数组继承了System名字空间的Array类。
VB.NET中的数组有两种类型:定长数组和动态数组。
扩展资料:
1、数组的使用
在’VB 6.0中,能够用For Each来循环遍历一个数组。
比如:
Dim x As Integer
F0r Each x In arrayl
Console.WriteLine(x)
Next
2、在VB.NET中能够使用For循环和数组长度来遍历一个数组。
比如:
Dim i As工nteger
F0r i=0 T0 (arrayl.Length-1)
(此处空一行)
Console.WriteLine(arrayl(1)J
Next i
1、vb点虐 的
数组定义与变量定义差不多。可以用
dim
来定义
比如:
dim
a(100)
as
integer。
也可以不定义下标
在程序中
用
redim
来定义。
如:
dim
a()
as
integer
'
'
redim
a(100)
2、vb点虐 中定义数组可以直接赋值。
如:
dim
a()
as
integer
={1,
2,
3,4}
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款