< 返回版块

CQUPTYHM 发表于 2020-04-30 21:24

Tags:array,slice,len

网上说slice是一个胖指针,记录了其中指向的数组的长度,并且是硬编码的。 这个硬编码的意思是在编译器就slice就知道了数组的长度还是别的意思? 求指点。

评论区

写评论
lagudomeze 2020-05-01 16:27

对以下内容的回复:

作者 CQUPTYHM 2020-05-01 10:34

https://stackoverflow.com/questions/61535226/how-does-rust-determine-the-length-of-a-slice-when-unsizing-from-an-array 这个回答解决了我的问题

作者 CQUPTYHM 2020-05-01 08:24

这个我明白,我有疑惑的是 slice里的len部分是如何知道的, Vec里面是存了一个 len 在转成slice时可以获取到,但是数组里面并没有len这个字段啊 对以下内容的回复:

chirsz-ever 2020-04-30 22:03

参见 https://cheats.rs/#references-pointers-ui,胖指针的大小比普通指针大,slice 的长度就是放在这个额外部分里的。

1 共 4 条评论, 1 页