赞
踩
- fn main() {
-
- let mut foo1 = String::from("1asdasdasd");
- let foollmut = &mut foo1;
- let pointer = foollmut as *mut String;
-
- let points_at1 = unsafe { &*pointer };
- println!("points_at1 {}", points_at1);
-
-
- let x = 5;
- let raw = &x as *const i32;
- //当你解引用一个裸指针,你要为它并不指向正确的地方负责。为此,你需要unsafe:
- let points_at = unsafe { *raw };
- println!("raw points at {}", points_at);
-
- }
- fn main() {
- let a = 3.1 as i8;
- let b = 100_i8 as i32;
- let c = 'a' as u8; // 将字符'a'转换为整数,97
-
- println!("{},{},{}",a,b,c);
-
-
- let mut values: [i32; 2] = [1, 2];
- let p1: *mut i32 = values.as_mut_ptr();
- let first_address = p1 as usize; // 将p1内存地址转换为一个整数
- let second_address = first_address + 4; // 4 == std::mem::size_of::<i32>(),i32类型占用4个字节,因此将内存地址 + 4
- let p2 = second_address as *mut i32; // 访问该地址指向的下一个整数p2
- unsafe {
- *p2 += 1;
- }
- assert_eq!(values[1], 3);
-
- let mut a = 1;
- let aco = &mut a as *mut i32;
- // let aco1 = aco as usize;
-
- unsafe {
- *aco += 1;
- }
- println!("aco0------{}",a);
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。