addr 操作符

addr 运算符返回左值的地址。如果地址的类型是 T, 则 addr 运算符结果的类型为 ptr T 。 地址总是一个未追踪引用的值。获取驻留在堆栈上的对象的地址是 不安全的 , 因为指针可能比堆栈中的对象存在更久, 因此可以引用不存在的对象。 我们得到变量的地址,是为了更容易与其他编译语言互操作(如C),也可以做到检索 let 变量、参数或 for 循环变量的地址:

  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))