C 可变指针
当一个函数被声明为接受CMutablePointer<Type>参数时,这个函数可以接受下列任何一个类型作为参数:
•nil,作为空指针传入
•一个CMutablePointer<Type>类型的值
•一个操作数是 Type 类型的左值的输入输出表达式,作为这个左值的内存地址传入
•一个输入输出 Type[] 值,作为一个数组的起始指针传入,并且它的生命周期将在这个调用期间被延长
如果您像这样声明了一个函数:
复制代码
//Swift
func takesAMutablePointer(x: CMutablePointer<Float>) { /*...*/ }
那么您可以使用以下任何一种方式来调用这个函数:
复制代码//Swift
var x: Float = 0.0
var p: CMutablePointer<Float> = nil
var a: Float[] = [1.0, 2.0, 3.0]
takesAMutablePointer(nil)
takesAMutablePointer(p)
takesAMutablePointer(&x)
takesAMutablePointer(&a)
当函数被声明使用一个CMutableVoidPointer参数,那么这个函数接受任何和CMutablePointer<Type>相似类型的Type操作数。
如果您这样定义了一个函数:
复制代码
//Swift
func takesAMutableVoidPointer(x: CMutableVoidPointer) { /* ... */ }
那么您可以使用以下任何一种方式来调用这个函数:
复制代码 //Swiftvar x: Float = 0.0, y: Int = 0
var p: CMutablePointer<Float> = nil, q: CMutablePointer<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)
C 常指针








