let mut a = 5;
let b = &mut a;
*b = 6;
println!("{:p}", a as *const i32);
字符串 由于b被指定为a的可变引用,因此*b = 6行将存储在a中的值修改为6。 将一个整数转换为一个指针,就像在a as *const i32中所做的那样,将该整数值(在本例中为6)视为指针的地址。因此,a as *const i32创建了一个指向存储在0x6中的数据的指针。 当你打印一个指针时,就像你的例子中的其他行一样,它打印指针的地址。所以,println!("{:p}", a as *const i32);打印地址0x6,因为a的值被用作转换创建的指针的地址。
1条答案
按热度按时间8qgya5xd1#
简化代码以隔离您所询问的行,我们有以下代码:
字符串
由于
b
被指定为a
的可变引用,因此*b = 6
行将存储在a
中的值修改为6
。将一个整数转换为一个指针,就像在
a as *const i32
中所做的那样,将该整数值(在本例中为6
)视为指针的地址。因此,a as *const i32
创建了一个指向存储在0x6
中的数据的指针。当你打印一个指针时,就像你的例子中的其他行一样,它打印指针的地址。所以,
println!("{:p}", a as *const i32);
打印地址0x6
,因为a
的值被用作转换创建的指针的地址。