📜  数组作为参数 rust (1)

📅  最后修改于: 2023-12-03 14:55:00.100000             🧑  作者: Mango

Rust 中的数组作为参数

在 Rust 中,如果要将数组作为参数传递给函数,可以使用以下语法:

fn func(arr: &[i32]) {
    // 函数体中可以使用数组 arr
}

其中,arr: &[i32] 表示一个 i32 类型的数组的切片,也就是只读的,无法修改原数组的内容。

如果要传递一个可变的数组,可以使用以下语法:

fn func(arr: &mut [i32]) {
    // 函数体中可以使用数组 arr,并对其进行修改
}

其中,arr: &mut [i32] 表示一个 i32 类型的数组的可变切片,可以在函数中修改原数组的内容。

下面是一个将数组作为参数传递给函数,并计算数组元素和的例子:

fn main() {
    let arr = [1, 2, 3, 4, 5];
    let sum = sum_array(&arr);
    println!("Sum of array elements: {}", sum);
}

fn sum_array(arr: &[i32]) -> i32 {
    let mut sum = 0;
    for num in arr {
        sum += num;
    }
    sum
}

可以看到,我们在 sum_array 函数中使用了数组切片 &[i32] 作为参数,并对数组元素进行求和,最后返回了求和结果。在 main 函数中,我们声明了一个数组 arr,并调用 sum_array 函数来计算数组元素和,打印了结果。

当然,如果我们想要在函数内部修改数组元素,可以使用可变切片 &mut [i32],例如:

fn main() {
    let mut arr = [1, 2, 3, 4, 5];
    println!("Original array: {:?}", arr);
    add_one_to_array(&mut arr);
    println!("Modified array: {:?}", arr);
}

fn add_one_to_array(arr: &mut [i32]) {
    for num in arr {
        *num += 1; // 对数组元素加一
    }
}

可以看到,我们在 add_one_to_array 函数中声明了一个可变切片 &mut [i32],并对数组中的每个元素加一。在 main 函数中,我们声明了一个 mut 变量 arr,将其传递给 add_one_to_array 函数,打印原数组和修改后的数组。