gpt4 book ai didi

arrays - Swift 数组作为 C 函数缓冲区

转载 作者:搜寻专家 更新时间:2023-11-01 06:39:07 25 4
gpt4 key购买 nike

我使用 swift 数组作为函数的输出缓冲区,该函数接受一个指针并填充它,如下所示:

var buffer : [Int32] = ...
tehFillFunc(UnsafeMutablePointer<Int32>(buffer))

这工作正常,问题是编译器提示 Variable 'buffer' was never mutated;考虑更改为“让”常量,我不想这样做,因为我很确定它在我的填充函数中发生了变化。

那么,有什么方法可以让它消音吗? (我可以只做一些虚拟设置,但我更愿意正确地做)。

编辑:按要求显示问题的完整示例代码(甚至不需要 c):

class ViewController: UIViewController {

func fill(sth: UnsafeMutablePointer<Int32>) {
sth[0] = 7
}

override func viewDidLoad() {
super.viewDidLoad()

var array = [Int32].init(count: 10, repeatedValue: 0)
fill(UnsafeMutablePointer<Int32>(array))
print("\(array)")
}
}

但是,解决方案已经发布。最简单的形式:

        fill(&array)

最佳答案

通常您需要指定缓冲区大小。在这种情况下,我更喜欢以下解决方案:

let bufferSize = 1000
var buffer = [Int32](count: bufferSize, repeatedValue: 0)
tehFillFunc(&buffer)

关于arrays - Swift 数组作为 C 函数缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37809304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com