< 返回版块

joshsulin 发表于 2020-11-23 20:28

Rust中的数组拥有固定的长度,一旦声明就再也不能随意更改. 应该很容易就能发现非法的数组元素访问问题吧? 有一点疑惑, 为什么编译器不能在编译阶段报出来?

评论区

写评论
Nalleyer 2020-11-24 22:03

如果代码里写个魔法数字当下标当然可以检查,关键是下标可以来源于文件,随机,网络等

songzhi 2020-11-24 08:22

你试试不就知道了,下面的代码我复制下来,rust-analyzer和ructc都会报错说下标可能越界。

--
👇
joshsulin: 比如: 针对这样的代码.

fn main() { let a = [1, 2, 3, 4, 5]; let index = 10; let element = a[index]; println!("The value of element is: {}", element); }

是不是编译器应该检测到

--
👇
lagudomeze: 用户输入的一个index呢?这个只能运行时决定吧

作者 joshsulin 2020-11-23 23:51

比如: 针对这样的代码.

fn main() { let a = [1, 2, 3, 4, 5]; let index = 10; let element = a[index]; println!("The value of element is: {}", element); }

是不是编译器应该检测到

--
👇
lagudomeze: 用户输入的一个index呢?这个只能运行时决定吧

lagudomeze 2020-11-23 22:41

用户输入的一个index呢?这个只能运行时决定吧

zhouchongzxc 2020-11-23 21:17

如果是一个函数参数做index呢?

1 共 5 条评论, 1 页