rust integer cast as pointer是什么意思

q5iwbnjs  于 2024-01-08  发布在  其他
关注(0)|答案(1)|浏览(114)

给定此代码:

let mut a = 5;
let b = &mut a; 
*b = 6;
println!("{:p}",a as *const i32);

字符串
和输出:

0x6

8qgya5xd

8qgya5xd1#

简化代码以隔离您所询问的行,我们有以下代码:

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的值被用作转换创建的指针的地址。

相关问题