반응형

[Swift 입문] 함수에서의 Call By Reference


Call by Reference란?

어떤 변수 X를 함수의 인자로 전달할 때, 실제로 X라는 변수가 함수의 인자가 되는 것인지 아니면 X=10이라고 할 때 10이라는 값이 복사되어 전달되는 것인지에 따라 결정된다.

Call by Reference -> 다른말로 참조에 의한 전달이라고 하는 이것은, 전자와 같이 실제 X라는 값이 존재하는 데이터의 메모리상의 주소값을 함수의 인자로 전달함을 의미한다.


즉, 함수에서 인자로 전달받은 값을 수정할 경우 실제 X라는 값이 변경된다는 의미이다.


(위에서 말했던 경우 중 후자에 해당하는 값의 복사는 Call By Value라고 부른다.)



무슨말인가? 아래의 경우를 보자.




위와같이 x라는 변수가 5라는 값을 갖고있을 때, 함수에서 해당 값을 변경하려고하면, 애러가 발생하는것을 볼 수 있다.


애러 원인은 num이라는 매개변수로 들어온 값은 let(==상수) 이므로 변경이 불가능하다는 이야기다.


그럼 어떻게 실제값을 변경할 수 있을까?


아래와 같이 inout 키워드와 '&'을 이용하면 해결이 가능하다.





우측에 변수 값을 보게되면, 5였던 값이 10으로 변경된 것을 볼 수 있다.


함수에 'inout' 키워드를 넣고, 인자를 전달할 때, x앞에 '&'을 붙여줌으로 해당 문제를 해결했다.


변수에 '&'를 붙여준다는 것은 x라는 값이 저장되어있는 메모리의 주소를 함수에 전달해 준다는 의미이다.


지금 이해하기 어렵다면, 일단 넘어가도 좋을듯하다.


2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 1. 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 2. Project 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 3. 에뮬레이터로 앱 실행하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 4. 앱 아이콘 설정하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 5. LaunchScreen 만들기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 6. Swift 문법 알아보기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 7. Swift 문법 알아보기 (배열, 딕셔너리 등)

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] 8. Swift 함수 정의하기

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] Tip) 줄바꿈 없는 print


반응형

+ Recent posts