1

据我了解, UnsafePointer 将指针表示为不可变,而 UnsafeMutablePointer 将指针表示为可变。但是 vDSP 函数vDSP_zrvmul的签名如下:

func vDSP_zrvmul(_ __A: UnsafePointer<DSPSplitComplex>, 
               _ __IA: vDSP_Stride, 
               _ __B: UnsafePointer<Float>, 
               _ __IB: vDSP_Stride, 
               _ __C: UnsafePointer<DSPSplitComplex>, 
               _ __IC: vDSP_Stride, 
               _ __N: vDSP_Length)

__C应该是输出向量,但它不是可变的……我错过了什么?谢谢阅读。

4

1 回答 1

1

__A并且__C是指向 DSPSplitComplex

public struct DSPSplitComplex {
    public var realp: UnsafeMutablePointer<Float>
    public var imagp: UnsafeMutablePointer<Float>
}

其中包含指向浮点值数组的可变指针。

vDSP_zrvmul__C.realp 将输出写入and指向的数组__C.imagp,但__C它本身没有发生变异。

于 2018-01-18T19:51:08.087 回答