在 UnsafePointer<DSPSplitComplex> 写入值

Writing to value at UnsafePointer<DSPSplitComplex>

据我了解,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 应该是输出向量,但它不是可变的……我错过了什么?感谢阅读。

__A__C 是指向 DSPSplitComplex:

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

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

vDSP_zrvmul 将输出写入 __C.realp 指向的数组 和 __C.imagp,但 __C 本身没有突变。