我想从Rust 教程的“12 Dereferencing pointers”中了解以下代码片段的含义:
let point = &@~Point { x: 10f, y: 20f };
println(fmt!("%f", point.x));
特别是,@~ 是什么意思?
我想从Rust 教程的“12 Dereferencing pointers”中了解以下代码片段的含义:
let point = &@~Point { x: 10f, y: 20f };
println(fmt!("%f", point.x));
特别是,@~ 是什么意思?
它只是多个指针获取运算符的应用。你可以放大括号看更清楚(虽然我不知道它是否是有效的 Rust 代码):
&(@(~Point { x: 10f, y: 20f }))
这实际上是一个指向托管框的借用指针,其中包含指向结构的唯一指针。
当然,这样的事情在实际代码中是无用的,但它展示了取消引用的概念。
该表达式是对托管指针的引用,该托管指针指向指向 Point 的拥有指针。
上面的句子给出了一个很好的提示:
您可以编写一个自动取消引用任意数量指针的表达式。例如,如果你觉得有兴趣,你可以写一些愚蠢的东西
它只是为了证明你可以有一个指向某个东西的指针。代码肯定很愚蠢,因为这个片段没有很好地利用这个概念,它只是为了炫耀语法。
有关指针指针的更多信息,您可能会喜欢这个问题:指针指针如何在 C 中工作?