&(内存中的地址)是 Swift 中的运算符还是我在使用 C?

Is the & (Address in Memory) an operator in Swift or am I using C?

所以我正在研究 Ales Tsurko,[并且需要] Swift Chris Adamson 的 CoreAudio 示例的转换。但是,我遇到了一些我似乎无法找到直接答案的问题。

在示例中有这样的内容:

    var theErr = noErr
    var dictionarySize: UInt32 = 0
    var isWritable: UInt32 = 0
    theErr = AudioFileGetPropertyInfo(
            audiofile, 
            kAudioFilePropertyInfoDictionary, 
            &dictionarySize, 
            &isWritable
    )

我很好奇的是“&”(与号)运算符的使用。

现在,在普通的 C 系列语言中,this 指的是变量的内存地址,这里似乎就是这样做的。

令我困惑的是我在第四行写的是 Swift 还是 C 代码?

我知道您混合了 Obj-C 和 Swift,但我在 Swift 文档中找不到任何关于将 & 作为内存运算符使用的文档。那么这种使用是否没有记录,或者如果我暂时离开 Swift 进入 C/Obj-C 与那条线?

谢谢

来自the Apple documentation on Swift

When a function is declared as taking an UnsafeMutablePointer argument, it can accept the same operands as UnsafeMutablePointer for any type Type.

If you have declared a function like this one:

func takesAMutableVoidPointer(x: UnsafeMutablePointer<Void>)  {
    // ...
}

You can call it in any of the following ways:

var x: Float = 0.0, y: Int = 0
var p: UnsafeMutablePointer<Float> = nil, q: UnsafeMutablePointer<Int> = nil
var a: [Float] = [1.0, 2.0, 3.0], b: [Int] = [1, 2, 3]
takesAMutableVoidPointer(nil)
takesAMutableVoidPointer(p)
takesAMutableVoidPointer(q)
takesAMutableVoidPointer(&x)
takesAMutableVoidPointer(&y)
takesAMutableVoidPointer(&a)
takesAMutableVoidPointer(&b)

所以这是将对象的地址传递给函数,并且是原生的 Swift。