0

我想从Rust 教程的“12 Dereferencing pointers”中了解以下代码片段的含义:

let point = &@~Point { x: 10f, y: 20f };
println(fmt!("%f", point.x));

特别是,@~ 是什么意思?

4

2 回答 2

2

它只是多个指针获取运算符的应用。你可以放大括号看更清楚(虽然我不知道它是否是有效的 Rust 代码):

&(@(~Point { x: 10f, y: 20f }))

这实际上是一个指向托管框的借用指针,其中包含指向结构的唯一指针。

当然,这样的事情在实际代码中是无用的,但它展示了取消引用的概念。

于 2013-09-13T06:22:54.053 回答
1

该表达式是对托管指针的引用,该托管指针指向指向 Point 的拥有指针。

上面的句子给出了一个很好的提示:

您可以编写一个自动取消引用任意数量指针的表达式。例如,如果你觉得有兴趣,你可以写一些愚蠢的东西

它只是为了证明你可以有一个指向某个东西的指针。代码肯定很愚蠢,因为这个片段没有很好地利用这个概念,它只是为了炫耀语法。

有关指针指针的更多信息,您可能会喜欢这个问题:指针指针如何在 C 中工作?

于 2013-09-16T19:20:32.220 回答