我目前正在进行实验,同时试图学习铁 rust .
我看到有可能引用它自己的地址(下面是y = &y
),然而,由于某些原因,程序仍然能够找到引用最初指向的是什么;
let x = 1;
let mut y = &x;
println!("{y:p} -> {y}"); // 0x7fffb13d6f6c -> 1
y = &y;
println!("{y:p} -> {y}"); // 0x7fffb13d6f6c -> 1
我所理解的是,在第二行之后,记忆如下所示;
name | address | value |
---|---|---|
x | a1 | 1 |
y | a2 | a1 |
如果指令y = &y
正在将存储器变成这样;
name | address | value |
---|---|---|
x | a1 | 1 |
y | a2 | a2 |
println!
将能够输出它在最后一行上输出的内容,那么第四行到底是做什么的,它之后的内存是什么样子的?