• addr操作符

    addr操作符

    addr 运算符返回左值的地址。 如果位置的类型是 T ,则 addr 运算符结果的类型为 ptr T 。 地址是未追踪引用。 获取驻留在堆栈上的对象的地址是 不安全的 ,因为指针可能比堆栈中的对象存在更久,因此可以引用不存在的对象。

    可以获取变量的地址,但是不能在通过 let 语句声明的变量上使用它:

    1. let t1 = "Hello"
    2. var
    3. t2 = t1
    4. t3 : pointer = addr(t2)
    5. echo repr(addr(t2))
    6. # --> ref 0x7fff6b71b670 --> 0x10bb81050"Hello"
    7. echo cast[ptr string](t3)[]
    8. # --> Hello
    9. # 下面的行不能编译:
    10. echo repr(addr(t1))
    11. # 错误: 表达式没有地址