Rust 程式設計視訊教程(進階)——025_2 解引用裸指標

linghuyichong發表於2020-02-17

頭條地址: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 協議》,轉載必須註明作者和本文連結

令狐一衝

相關文章