/**
inout参数
例子交换 a 和 b
*/
var x = 10
var y = 19
swap3(a: x,b: y)
/**
但是 x y 并没有进行修改
这是一个典型的认识误区,我们想当然的认为 x y 进行了修改
只是变量 x当前的值赋给了a
变量 y当前的值赋给了 b
在C语言中我们知道可以传递 x y 变量的地址
*/
print(x)
print(y)
/**
把 x y 变量本身传递给了 函数
a 引用了 x , b 引用了y
& 地址
*/
swap4(a: &x,b: &y)
print("----------------->")
print(x)
print(y)
func swap3(a:Int,b:Int) -> Void {
var a = a
var b = b
let t = a
a = b
b = t
print("\(a),\(b)")
}
func swap4(a:inout Int,b:inout Int) -> Void {
var a = a
var b = b
let t = a
a = b
b = t
print("\(a),\(b)")
}