Skip to content

运算符 STRPTR(字符串指针)


返回字符串字符数据的地址。

语法

vb
declare operator Strptr ( byref lhs as string ) as zstring ptr
declare operator Strptr ( byref lhs as wstring ) as wstring ptr

用法

` result = Strptr ( lhs )

`

参数

lhs

一个字符串。

返回值

返回指向字符串/宽字符串字符数据的 Zstring/wstring Ptr(空字符串时返回 null 值)。

描述

该运算符返回一个 Zstring/wstring Ptr,指向字符串/宽字符串字符数据的起始位置。Operator Strptr 是获取字符串字符数据地址的正确方法。

对于空 string(仅针对可变长度字符串),Operator Strptr 返回空指针。

相关的 Operator Varptr (Variable pointer)Operator @ (Address of) 在与 String 一起使用时,返回内部字符串描述符的地址。

当修改可变长度字符串时,其描述符的地址始终保持不变,但字符串字符数据的地址(由 Operator Strptr 返回)可能会改变(就像任何必须重新分配的已分配内存一样)。

当修改固定长度字符串时,字符串字符数据的地址(由 Operator Strptr 返回)保持不变。

注意:对于可变长度字符串,该运算符返回 Zstring Const Ptr(因为通过引用返回字符串描述符中设置的字符指针,该指针应视为只读)。如果使用关键字 VarOperator Strptr 声明/初始化用户指针,该用户指针也被定义为只读(无法进一步修改)。

警告:从 fbc 1.20.0 版本起,对 STRING*N 类型的固定长度字符串的 zstring 指针解引用(该类型不再像以前那样有额外的终止空字符)可能导致字符串被一些污染数据扩展,甚至直接崩溃。

示例

start GeSHi

vb
'' This example uses Strptr to demonstrate using pointers with strings
Dim myString As String
Dim toMyStringDesc As Any Ptr
Dim toMyString As ZString Ptr

'' Note that using standard VARPTR notation will return a pointer to the
'' descriptor, not the string data itself
myString = "Improper method for Strings"
toMyStringDesc = @myString
Print myString
Print Hex( toMyStringDesc )
Print

'' However, using Strptr returns the proper pointer
myString = "Hello World Examples Are Silly"
toMyString = StrPtr(myString)
Print myString
Print *toMyString
Print

'' And the pointer acts like pointers to other types
myString = "MyString has now changed"
Print myString
Print *toMyString
Print

end GeSHi

与 QB 的差异

  • FreeBASIC 新增,但功能与 Sadd 完全相同

参见

返回 目录

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系