프로그래밍/C++
Swap 함수
DevIt
2013. 3. 30. 00:32
포인터를 배울 때 자주 등장하는 Swap 함수를 참조형으로 구현할 수 있다.
Swap() 함수는 두개의 인자를 받아서 값을 맞바꾸는 함수다.
Swap1() 함수는 함수 내에서 변경된 값이 함수가 종료되면 main() 함수에 영향을 주지 않는다. 쉽게 말해서 지역변수이다.
아래의 개념과 예제를 보고 이해하기.
Call by Value (값에 의한 호출) : 인자로 값을 복사하여 넘겨 받았으므로 (지역변수인) 두 값을 변경해도 메인함수에 영향이 없다. Call by Reference (주소에 의한 호출) : 메모리 주소를 받아와서 실제 해당 포인터가 가르키고 있는 값을 변경한다. 따라서 메인함수로 돌아와도 해당 메모리 주소를 사용하는 변수가 가진 값이 변경되어 있다. |
#include <iostream> using namespace std; void Swap1(int v1, int v2) { int temp; temp = v1; v1 = v2; v2 = temp; } void Swap2(int *v1, int *v2) { int temp; temp = *v1; *v1 = *v2; *v2 = temp; } void Swap3(int &v1, int &v2) { int temp; temp = v1; v1 = v2; v2 = temp; } void main(){ int a, b; a=100; b=200; Swap1(a,b); cout << a << " : " << b << endl; Swap2(&a,&b); cout << a << " : " << b << endl; Swap3(a,b); cout << a << " : " << b << endl; system("pause"); } |