【发布时间】:2020-08-25 16:29:10
【问题描述】:
Document 说:
- 一个包含可变变量、属性或 Type 类型下标引用的输入输出表达式,它作为指向左侧标识符地址的指针传递。
-
[Type]值,作为指向数组开头的指针传递。
但是当我运行以下代码时:
func print<Type>(unsafePointer pointer: UnsafePointer<Type>) {
print("\(pointer) ==> \(pointer.pointee) : \(Type.self)")
}
var array = [1, 2, 3, 4]
print(unsafePointer: array)
print(unsafePointer: &array[0])
我明白了
0x0000000104204240 ==> 1 : Int
0x00007ffeefbff440 ==> 1 : Int
为什么他们的地址不同?
【问题讨论】:
-
传递一个 inout 参数会生成一个临时副本,例如比较stackoverflow.com/a/32975169/1187415 或 stackoverflow.com/a/31232579/1187415
标签: swift unsafe-pointers