我读了一本由出版社出版的书,书名是Beginning Rust - Get Started with Rust 2021 Edition
在其中一个代码示例中,作者没有详细解释它,也没有清楚地解释代码是如何工作的.下面是代码片段
/* In a 64-bit system, it prints:
16 16 16; 8 8 8
In a 32-bit system, it prints:
8 8 8; 4 4 4
*/
fn main() {
use std::mem::*;
let a: &str = "";
let b: &str = "0123456789";
let c: &str = "abcdè";
print!("{} {} {}; ",
size_of_val(&a),
size_of_val(&b),
size_of_val(&c));
print!("{} {} {}",
size_of_val(&&a),
size_of_val(&&b),
size_of_val(&&c));
}
我的问题是它是如何工作的,因为_val的大小是一个参考值,这是在&;但是为什么会出现在输出上呢!语句中,作者在变量前加了另一个符号?除此之外,当我们只传递变量而不需要额外的符号时,比如size_of_val(a或b或c),我们得到的大小是针对a 0、b 10和c 6的,但是当我们传递变量时,比如size_of_val(&;a或&;b或&;c),就像作者描述的主函数上面的注释一样,大小是16或8.第二次打印最后一次!语句(宏)中,作者放了双符号来获得引用的大小?它是如何工作的.只是不明白,因为我认为这会产生错误,因为大小只接受一个参考,但在打印!宏有另一个和,第二个宏有双和...