首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB 变量地址有关问题

2012-03-14 
VB 变量地址问题例如:sub p(a() as string)end subdim s(3) as stringcall p(s)用什么方法赋值如果用地址

VB 变量地址问题
例如:
sub p(a() as string)

end sub

dim s(3) as string
call p(s)'用什么方法赋值

如果用地址
dim d as long
d=varptr(s)'这样会出错一定要写成 d=varptr(s(0)) 本来想得到一个数组变量的地址但是只能得到一个变量的地址

如果 d=varptr(s(0)) 用什么方法可以 d="haha" 's(0)的值也改变成"haha" 

各位大虾们帮帮忙解救一下

[解决办法]

VB code
Private Sub Form_Load()Dim s(3) As Strings(0) = "haha"s(1) = "hahahaha"s(2) = "hahahahahaha"s(2) = "hahahahahahahahahahahaha"Call p(s) '用什么方法赋值End SubSub p(a() As String)MsgBox a(0)End Sub
[解决办法]
1、d=varptr(s(0)) ,d是数组元素s(0)的地址,也是数组S的首地址,这一点跟 C++ 是一样的。
2、直接写成VarPtr("haha")是可以的, 在我的电脑里面,这个值是1307648,表示字符串"haha"的首地址。
[解决办法]
在VB当中String分为两类(这个跟Delphi差不多),一个是定长类,一个是不定长类.
定长类(dim s as string * 100):相当于c/c++里面的字符数组,变量的地址即为字符数据的首地址
不定长类(dim s as string):相当于一个字符串指针(当然是一个有结构的字符串)

String数组也有同样的问题存在.

对于不定长的String数组,实际上数组本身只是一个指针数组.对于这个,可以用下面的代码进行演示
VB code
Dim s1(3) As String'先不赋值Debug.Print Hex(VarPtr(s1(0)))Debug.Print Hex(StrPtr(s1(0)))Debug.Print Hex(VarPtr(s1(1)))Debug.Print Hex(StrPtr(s1(1)))Debug.Print Hex(VarPtr(s1(2)))Debug.Print Hex(StrPtr(s1(2)))'赋值s1(0) = "haha"s1(1) = "bbbb"s1(2) = "2222"Debug.Print Hex(VarPtr(s1(0)))Debug.Print Hex(StrPtr(s1(0)))Debug.Print Hex(VarPtr(s1(1)))Debug.Print Hex(StrPtr(s1(1)))Debug.Print Hex(VarPtr(s1(2)))Debug.Print Hex(StrPtr(s1(2)))'接着再取s1(0)的字符串地址(跟前面应该是一样的)Debug.Print Hex(StrPtr(s1(0)))
[解决办法]
不懂,帮顶
[解决办法]

热点排行