-
第一種打印變量的指針的方式如下代碼所示
在
Swift
中,我們可以使用withUnsafePointer(to:_:)
函數來獲取一個變量的指針,如下代碼所示:var x = 42 var y = 3.14 var z = "foo" var obj = NSObject() withUnsafePointer(to: &x) {ptr in print(ptr)} withUnsafePointer(to: &y) {ptr in print(ptr)} withUnsafePointer(to: &z) {ptr in print(ptr)} withUnsafePointer(to: &obj) {ptr in print(ptr)} // 0x000000011a145660 // 0x000000011a145668 // 0x000000011a145670 // 0x000000011a145688
withUnsafePointer(to:_:)
將第一個參數轉換為指針,然后將這個指針作為參數去調用第二個參數指定的閉包。如果閉包有返回值,它將作為函數的返回值。需要注意的是,生成的指針的生命周期限定於閉包內部,不能將其指定給外部的變量。
- 第二種打印變量的指針的方式如下代碼所示:
var x = 42 var y = 3.14 var z = "foo" var obj = NSObject() func printPointer<T>(ptr: UnsafePointer<T>) { print(ptr) } printPointer(ptr: &x) printPointer(ptr: &y) printPointer(ptr: &z) printPointer(ptr: &obj) // 0x000000011a145660 // 0x000000011a145668 // 0x000000011a145670 // 0x000000011a145688