addr操作符
addr 运算符返回左值的地址。 如果位置的类型是 T ,则 addr 运算符结果的类型为 ptr T 。 地址是未追踪引用。 获取驻留在堆栈上的对象的地址是 不安全的 ,因为指针可能比堆栈中的对象存在更久,因此可以引用不存在的对象。
可以获取变量的地址,但是不能在通过 let 语句声明的变量上使用它:
- let t1 = "Hello"
- var
- t2 = t1
- t3 : pointer = addr(t2)
- echo repr(addr(t2))
- # --> ref 0x7fff6b71b670 --> 0x10bb81050"Hello"
- echo cast[ptr string](t3)[]
- # --> Hello
- # 下面的行不能编译:
- echo repr(addr(t1))
- # 错误: 表达式没有地址