8
var b: array[5, int]

type
    ArrRef = ref array[5, int]

var c : ArrRef
echo repr(c) # nil
c = addr b # doesn't compile, says type is Array constructor, expected reference

在 Nim 中,如何传递对数组的引用而不是按值传递?到目前为止,请参阅上面的代码。

4

1 回答 1

10

在 Nimref中,s 在堆上,必须分配new. 您不能只使用堆栈数组作为 a ref,因为那是不安全的:当数组从堆栈中消失时,ref指向一些错误的内存。相反,您有两种选择:您可以使用 unsafeptr代替。除了refs,它们不是垃圾收集器,可用于不安全的东西。或者,您可以直接b制作ref array

于 2015-06-01T23:09:03.503 回答