在 Rust 中,原始指针是指没有任何所有权和生命周期信息的指针。Rust 提供了两种原始指针类型:*const T 和 *mut T,分别用于不可变和可变的原始指针。使用原始指针需要谨慎,因为它们不受 Rust 的借用检查系统的保护。

以下是一个简单的例子,演示了原始指针的基本用法:
fn main() {
    // 创建一个整数
    let number = 42;

    // 创建一个不可变的原始指针
    let raw_ptr: *const i32 = &number;

    // 使用原始指针读取值
    unsafe {
        println!("Value at raw pointer: {}", *raw_ptr);
    }

    // 创建一个可变的整数
    let mut mutable_number = 100;

    // 创建一个可变的原始指针
    let mut_ptr: *mut i32 = &mut mutable_number;

    // 使用原始指针修改值
    unsafe {
        *mut_ptr = 200;
    }

    // 验证修改结果
    println!("Modified value: {}", mutable_number);
}

在这个例子中,我们首先创建了一个整数 number,然后使用 &number 获取了不可变的引用,并将其强制转换为 *const i32 类型的不可变原始指针。接着,使用 unsafe 块来使用原始指针读取值。同样的,我们还演示了可变原始指针的创建和使用。

需要注意的是,使用原始指针时必须放置在 unsafe 块内,因为原始指针绕过了 Rust 的借用检查系统,可能导致不安全的行为。确保在使用原始指针时,要对其进行正确的生命周期管理和操作。

总体而言,Rust 鼓励使用安全的引用和借用系统,但在某些需要与 C 代码等进行交互的场景下,原始指针提供了一种手动管理内存的机制。


转载请注明出处:http://www.zyzy.cn/article/detail/6817/Rust