update ch04-02 close #822

This commit is contained in:
KaiserY 2024-11-03 20:43:26 +08:00
parent 4011c30416
commit 8cb590ddd0

View File

@ -15,13 +15,13 @@
{{#rustdoc_include ../listings/ch04-understanding-ownership/no-listing-07-reference/src/main.rs:all}}
```
首先,注意变量声明和函数返回值中的所有元组代码都消失了。其次,注意我们传递 `&s1``calculate_length`,同时在函数定义中,我们获取 `&String` 而不是 `String`。这些 & 符号就是 **引用**,它们允许你使用值但不获取其所有权。图 4-5 展示了一张示意图。
首先,注意变量声明和函数返回值中的所有元组代码都消失了。其次,注意我们传递 `&s1``calculate_length`,同时在函数定义中,我们获取 `&String` 而不是 `String`。这些 & 符号就是 **引用**,它们允许你使用值但不获取其所有权。图 4-6 展示了一张示意图。
<img alt="Three tables: the table for s contains only a pointer to the table
for s1. The table for s1 contains the stack data for s1 and points to the
string data on the heap." src="img/trpl04-05.svg" class="center" />
string data on the heap." src="img/trpl04-06.svg" class="center" />
<span class="caption">图 4-5`&String s` 指向 `String s1` 示意图</span>
<span class="caption">图 4-6`&String s` 指向 `String s1` 示意图</span>
> 注意:与使用 `&` 引用相反的操作是 **解引用***dereferencing*),它使用解引用运算符,`*`。我们将会在第八章遇到一些解引用运算符,并在第十五章详细讨论解引用。