推荐答案
在 Rust 中,可以通过以下方式创建数组:
// 创建一个包含 5 个元素的数组,元素类型为 i32 let arr: [i32; 5] = [1, 2, 3, 4, 5]; // 创建一个包含 3 个元素的数组,所有元素初始化为 0 let zeros = [0; 3];
本题详细解读
数组的定义
在 Rust 中,数组是一个固定大小的、相同类型的元素集合。数组的类型表示为 [T; N]
,其中 T
是元素的类型,N
是数组的长度。数组的长度在编译时必须是已知的,且不可变。
数组的初始化
显式初始化:可以通过显式列出所有元素来初始化数组。例如:
let arr: [i32; 5] = [1, 2, 3, 4, 5];
这里
arr
是一个包含 5 个i32
类型元素的数组。重复初始化:如果数组的所有元素都是相同的值,可以使用
[value; length]
的语法来初始化数组。例如:let zeros = [0; 3];
这里
zeros
是一个包含 3 个i32
类型元素的数组,所有元素都初始化为0
。
数组的访问
数组的元素可以通过索引访问,索引从 0
开始。例如:
let first_element = arr[0]; // 访问第一个元素 let second_element = arr[1]; // 访问第二个元素
数组的长度
可以使用 len()
方法获取数组的长度:
let length = arr.len(); // 获取数组的长度
数组的不可变性
默认情况下,Rust 中的数组是不可变的。如果需要修改数组中的元素,可以使用 mut
关键字声明可变数组:
let mut arr = [1, 2, 3]; arr[0] = 10; // 修改第一个元素
数组的边界检查
Rust 会在运行时检查数组访问的边界,如果访问超出数组范围的索引,程序会 panic。例如:
let arr = [1, 2, 3]; let element = arr[3]; // 这将导致 panic,因为索引 3 超出了数组的范围
数组的切片
数组可以通过切片来引用其一部分元素。切片是一个动态大小的视图,类型为 &[T]
。例如:
let slice = &arr[1..3]; // 获取数组的第二个和第三个元素的切片
切片可以用于传递数组的一部分给函数,而不需要复制整个数组。