| 发表于:2007-08-29 09:26:2910楼 得分:10 |
mmyyxx88() 说的是 c 标准的 char* 概念。 而 vb 的 string 类型是用 com 的 bstr 标准,在字符指针指向的地址前的四个字节存放了字符串的字节个数,指针指向的地址开始向后存放字符串的内容。 这样将 bstr 传递给使用 char* 的函数会导致由于没有结尾的 "\0 " 而导致操作超过字符串合法内容的地址而导致各种问题,所以通常在 bstr 后面添加一个 chr(0) 后传递给函数,为了与一般的 str 变量区别而用了 szstr。 不过大多数情况下将 char* 参数在 vb 中声明为 string 参数,vb 会自动进行相关的处理(除了结尾 "\0 ",还会进行 unicode/ansi 转换)。 | | |
|