C++
20160513_포인터와 함수
cho22
2016. 5. 17. 00:59
반응형
1. 함수의 특징
- 함수에 인자로 값을 주면 값을 복사하기만 할 뿐, 실제 복사는 이루어지지 않는다. 이것을 call by value라고 한다.
예를 들어 mySwap 함수를 만든다면 main함수에서 인자를넣어 mySwap을 호출 할 것이다.
a와 b에 3과 5를 넣어 mySwap을 호출 했지만, 실제로는 mySwap이라는 함수에 새로운 int a, int b의 공간이 생겨 3과 5라는 값이 복사된것이다.
mySwap 을 실행 한 뒤에도 원래 main의 저장공간 a, b에는 변화가 없으므로 swap이 되지 않았음을 확인 할 수 있다.
그렇다면 실제 main의 a와 b의 값을 바꾸려면 어떻게 해야하는가
2. 포인터를 사용한 함수
함수에 인자로 주소값을 주면 그 주소값에 직접 접근하여 값을 변화시켜 swap을 실행 할 수 있게 된다. 이것을 call by reference라고 한다.
함수에 주소값을 넣어주게 되면 main에서 만든 a와 b의 주소를 넘겨주고, mySwap 에서 넘겨받은 주소에 접근하기 때문에 같은 변수에 접근하게 되어 swap이 이루어 지는 것을 확인 할 수 있다.
반응형