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}} {{#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 <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 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*),它使用解引用运算符,`*`。我们将会在第八章遇到一些解引用运算符,并在第十五章详细讨论解引用。 > 注意:与使用 `&` 引用相反的操作是 **解引用***dereferencing*),它使用解引用运算符,`*`。我们将会在第八章遇到一些解引用运算符,并在第十五章详细讨论解引用。