mirror of
https://github.com/rust-lang-cn/book-cn.git
synced 2025-01-23 07:20:20 +08:00
Update ch15-02-deref.md
解引用的结果是一个值,而非一个引用,而”追踪一个引用所指向的值“更像是在描述一个引用,而非一个值。"解出"引用的值,比”追踪“引用的值更能清晰地表述解引用的结果是一个值的概念。
This commit is contained in:
parent
63f4101d4d
commit
b582ca5e88
@ -8,7 +8,7 @@
|
||||
|
||||
### 通过解引用运算符追踪指针的值
|
||||
|
||||
常规引用是一个指针类型,一种理解指针的方式是将其看成指向储存在其他某处值的箭头。在示例 15-6 中,创建了一个 `i32` 值的引用,接着使用解引用运算符来跟踪所引用的数据:
|
||||
常规引用是一个指针类型,一种理解指针的方式是将其看成指向储存在其他某处值的箭头。在示例 15-6 中,创建了一个 `i32` 值的引用y,接着使用解引用运算符来解出y所引用的值:
|
||||
|
||||
<span class="filename">文件名: src/main.rs</span>
|
||||
|
||||
@ -22,9 +22,9 @@ fn main() {
|
||||
}
|
||||
```
|
||||
|
||||
<span class="caption">示例 15-6:使用解引用运算符来跟踪 `i32` 值的引用</span>
|
||||
<span class="caption">示例 15-6:使用解引用运算符来解出 `i32` 值的引用所指向的值</span>
|
||||
|
||||
变量 `x` 存放了一个 `i32` 值 `5`。`y` 等于 `x` 的一个引用。可以断言 `x` 等于 `5`。然而,如果希望对 `y` 的值做出断言,必须使用 `*y` 来追踪引用所指向的值(也就是 **解引用**)。一旦解引用了 `y`,就可以访问 `y` 所指向的整型值并可以与 `5` 做比较。
|
||||
变量 `x` 存放了一个 `i32` 值 `5`。`y` 等于 `x` 的一个引用。可以断言 `x` 等于 `5`。然而,如果希望对 `y` 的值做出断言,必须使用 `*y` 来解出引用所指向的值(也就是 **解引用**)。一旦解引用了 `y`,就可以访问 `y` 所指向的整型值并可以与 `5` 做比较。
|
||||
|
||||
相反如果尝试编写 `assert_eq!(5, y);`,则会得到如下编译错误:
|
||||
|
||||
@ -39,7 +39,7 @@ error[E0277]: can't compare `{integer}` with `&{integer}`
|
||||
`{integer}`
|
||||
```
|
||||
|
||||
不允许比较数字的引用与数字,因为它们是不同的类型。必须使用解引用运算符追踪引用所指向的值。
|
||||
不允许比较数字的引用与数字,因为它们是不同的类型。必须使用解引用运算符解出引用所指向的值。
|
||||
|
||||
### 像引用一样使用 `Box<T>`
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user