Rust語言中,指針的用法有以下幾種:
引用(Reference):Rust中的常規指針,通過&
符號來創建。引用允許借用數據的所有權,但不允許修改數據。有可變引用和不可變引用兩種類型。
let x = 5;
let y = &x; // 不可變引用
let mut z = 10;
let w = &mut z; // 可變引用
裸指針(Raw Pointer):Rust中的裸指針是一種不受安全性檢查的指針,通常用于進行底層操作。可以使用*const T
和*mut T
來聲明不可變和可變的裸指針。
let x = 5;
let raw_ptr: *const i32 = &x; // 不可變裸指針
let mut y = 10;
let mut_raw_ptr: *mut i32 = &mut y; // 可變裸指針
使用裸指針需要使用unsafe
關鍵字包裹代碼塊,表示該代碼塊中的操作是不受Rust的安全性檢查的。
Box指針:通過使用Box<T>
類型,可以在堆上分配內存并在被銷毀時自動釋放。
let x = Box::new(5);
Box指針通常用于在需要所有權轉移的情況下,創建動態分配的數據結構。
此外,Rust還提供了其他類型的指針,如裸指針的null
和const
版本(std::ptr::null
和std::ptr::null_mut
),以及用于操作原生操作系統句柄的std::os::raw::c_void
類型的指針。