Swift에서 함수와 메소드의 매개변수는 기본적으로 상수(Constant)로 전달이 되고, 해당 값을 직접 수정할 수 없습니다. (함수안에서 사용하는 파라미터 변수를 직접 변경해서 사용하고싶을때 inout을 사용)

수정을 하려면 내부에서 별도의 지역변수를 선언해서 대입하는 과정이 필요합니다. 그렇게 해도, 변화된 값은 그 함수를 벗어나면 그대로 사라집니다.

Inout parameter는 참조로 전달 할때 사용하기 때문에 값을 변경 할수 있습니다.

in-out 파라미터는 기본값을 가질 수 없고 가변 파라미터는 inout 으로 표기할 수 없습니다.

func swapTwoInts(_ a: inout Int, _ b: inout Int) {
    let temporaryA = a
    a = b
    b = temporaryA
}