我这样做是为了理解Rust中的地址。这是一个更复杂的实验的一部分。但首先,我想了解一下。
fn main () {
let mut b = 3;
println!("in main i32 {:p}", &b);
println!("in main i32 {:p}", &&b);
println!("in main i32 {:p}", &&&b);
println!("in main i32 {:p}", &&&&b);
println!("in main i32 {:p}", &&&&&b);
}
除了第一个println!
之外,我预计所有的println!
都有编译器错误。但它编译并运行。我查到了每个电话的不同地址。
1条答案
按热度按时间kxeu7u2r1#
当您在
Rust
中使用&
运算符来引用一个值时,它会创建一个指向原始值的内存位置的新引用。每增加一个&
都会创建一个对前一个引用的新引用。在您的示例中,当您使用多个&
运算符时,您正在创建对引用的引用。每个println!
语句打印的地址对应于这些引用的内存位置。因此,
&b
引用b
的值,因此&&b
引用&b
的值,依此类推。