PEEK
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgPeek
- 最后更新: 2021-03-04
获取内存中某地址处任意类型的值
语法
vb
declare function Peek ( byval address as any ptr ) byref as ubyte
declare function Peek ( datatype, byval address as any ptr ) byref as datatype用法
Peek( [ datatype, ] address )参数
address
要从中获取值的内存地址。
datatype
要获取的值的类型。如果省略,则假定为 ubyte。
说明
此过程返回由内存地址给定的内存中值的引用,等同于:
*cast(ubyte ptr, address)
或
*cast(datatype ptr, address)
因此,此关键字也可以用来向内存位置赋值,类似于 Poke。
注意:使用 Peek 时,-exx 编译器选项不会添加空指针检查代码(不对 address 的值进行空值测试)。
示例
start GeSHi
vb
Dim i As Integer, p As Integer Ptr
p = @i
Poke Integer, p, 420
Print Peek(Integer, p)end GeSHi
将产生如下输出:
420与QB的区别
- QB 中的
Peek不支持datatype参数,只能返回单个字节。 - FB 中的
Peek返回引用,因此可以用来设置地址的内存内容,类似于Operator * (Value of)。 - 不再需要
DEF SEG,因为 FreeBASIC 中的地址空间是 32 位平坦的。
参见
PokeOperator * (Value of)
返回 目录