当前位置:   article > 正文

rust 裸指针_rust 裸指针 非copy

rust 裸指针 非copy
  1. fn main() {
  2. let mut foo1 = String::from("1asdasdasd");
  3. let foollmut = &mut foo1;
  4. let pointer = foollmut as *mut String;
  5. let points_at1 = unsafe { &*pointer };
  6. println!("points_at1 {}", points_at1);
  7. let x = 5;
  8. let raw = &x as *const i32;
  9. //当你解引用一个裸指针,你要为它并不指向正确的地方负责。为此,你需要unsafe:
  10. let points_at = unsafe { *raw };
  11. println!("raw points at {}", points_at);
  12. }
  1. fn main() {
  2. let a = 3.1 as i8;
  3. let b = 100_i8 as i32;
  4. let c = 'a' as u8; // 将字符'a'转换为整数,97
  5. println!("{},{},{}",a,b,c);
  6. let mut values: [i32; 2] = [1, 2];
  7. let p1: *mut i32 = values.as_mut_ptr();
  8. let first_address = p1 as usize; // 将p1内存地址转换为一个整数
  9. let second_address = first_address + 4; // 4 == std::mem::size_of::<i32>(),i32类型占用4个字节,因此将内存地址 + 4
  10. let p2 = second_address as *mut i32; // 访问该地址指向的下一个整数p2
  11. unsafe {
  12. *p2 += 1;
  13. }
  14. assert_eq!(values[1], 3);
  15. let mut a = 1;
  16. let aco = &mut a as *mut i32;
  17. // let aco1 = aco as usize;
  18. unsafe {
  19. *aco += 1;
  20. }
  21. println!("aco0------{}",a);
  22. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/932436
推荐阅读
相关标签
  

闽ICP备14008679号