5.6 Swift中inout参数

来源:互联网 发布:小内存win10平板优化 编辑:程序博客网 时间:2024/05/22 15:26

        /**

         inout参数

         例子交换 a b

         */

        

        var x =10

        var y =19

        swap3(a: x, b: y)

        

        

        /**

         可以看到swap3函数中 a b进行了修改,

         但是 x y并没有进行修改

         

         这是一个典型的认识误区,我们想当然的认为 x y进行了修改

         

         只是变量 x当前的值赋给了a

         变量 y当前的值赋给了 b

         

         C语言中我们知道可以传递 x y变量的地址

         */

        print(x)

        print(y)

        

        

        

        /**

         x y变量本身传递给了函数

         

         a 引用了 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:inoutInt, b:inoutInt) -> Void {

        

        var a = a

        var b = b

        let t = a

        a = b

        b = t

        

        print("\(a),\(b)")

    }



0 0
原创粉丝点击