頭條地址:https://www.ixigua.com/i677586170644791348...
B站地址:https://www.bilibili.com/video/av81202308/
github地址:https://github.com/anonymousGiga/learn_rus...
裸指標是可變和不可變的,分別寫作const T和mut T。此處的星號不是解引用運算子,而是型別名稱的一部分。
裸指標:
(1)允許忽略借用規則,可以同時擁有不可變和可變的指標,或多個指向相同位置的可變指標
(2)不保證指向有效的記憶體
(3)允許為空
(4)不能實現任何自動清理功能
建立不可變和可變裸指標,可以在安全程式碼中 建立 裸指標,只是不能在不安全塊之外 解引用 裸指標。
例子:
fn main() {
let mut num = 5;
let r1 = &num as *const i32;
let r2 = &mut num as *mut i32;
let address = 0x012345usize;
let _r = address as *const i32;
unsafe {
println!("r1 is: {}", *r1);
println!("r2 is: {}", *r2);
}
}
說明:建立一個指標不會造成任何危險;只有當訪問其指向的值時才有可能遇到無效的值。在上述例子中,建立num的可變和不可變裸指標是可以編譯的,但是如果建立可變和不可變引用編譯不過(安全的Rust)。所以是使用裸指標需要非常注意。
本作品採用《CC 協議》,轉載必須註明作者和本文連結