文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
7.7.1 转换
安全转换指针类型,但目标读写操作仍须 unsafe
担保。
- 不同类型指针间转换。
- 指针转换为整数。
- 整数转换为指针。
- 数组引用转换为指针。
- 函数指针转换为其他指针。
- 函数指针转换为整数。
fn main() { let x = 100; let p: *const i32 = &x; let p2 = p as *const i16; // ptr -> ptr let addr = p as usize; // ptr -> usize let p3 = addr as *const i32; // usize -> ptr println!("{:p}, {:x}", p2, addr); assert_eq!(p, p3); }
fn main() { let d = [10, 11, 12, 13, 14]; let p1 = &d as *const i32; // &array -> ptr let p2 = &d[2] as *const i32; // &element -> ptr unsafe { assert_eq!(10, *p1); assert_eq!(12, *p2); } }
fn test() { println!("hello, world!"); } fn main() { let p = test as *const usize; // fn -> void_ptr let x = test as usize; // fn -> usize println!("{:p}, {:x}", p, x); }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论