MST

星途 面试题库

面试题:Rust引用声明之基础应用

在Rust中,分别阐述不可变引用和可变引用声明的语法,并说明在函数参数中使用这两种引用时,函数体对参数的操作有何不同?请举例代码说明。
34.2万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试

不可变引用

  1. 声明语法:使用&符号。例如,假设有一个变量x,可以这样创建不可变引用:
let x = 5;
let ref_x = &x;
  1. 函数参数中使用:在函数参数中使用不可变引用时,函数体不能修改引用指向的值。
fn print_value(ref_num: &i32) {
    // 尝试修改会报错
    // *ref_num = 10; 
    println!("The value is: {}", ref_num);
}

可变引用

  1. 声明语法:使用&mut符号。例如:
let mut x = 5;
let ref_mut_x = &mut x;
  1. 函数参数中使用:在函数参数中使用可变引用时,函数体可以修改引用指向的值。
fn increment_value(ref_mut_num: &mut i32) {
    *ref_mut_num += 1;
    println!("Incremented value is: {}", ref_mut_num);
}

示例完整代码

fn print_value(ref_num: &i32) {
    // 尝试修改会报错
    // *ref_num = 10; 
    println!("The value is: {}", ref_num);
}

fn increment_value(ref_mut_num: &mut i32) {
    *ref_mut_num += 1;
    println!("Incremented value is: {}", ref_mut_num);
}

fn main() {
    let x = 5;
    print_value(&x);

    let mut y = 5;
    increment_value(&mut y);
}