포인터를 배울 때 자주 등장하는 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");

}


'프로그래밍 > C++' 카테고리의 다른 글

범위지정 연산자 (Scope Resolution Operator)  (0) 2013.07.20
이름공간(namespace) 기본형  (0) 2013.07.20
입력 받은 수의 구구단 출력  (0) 2013.07.19
포인터  (0) 2013.06.01
참조 연산자(&)와 참조 변수  (0) 2013.03.29
인라인(inline) 함수  (0) 2013.03.28
동적 메모리 이용  (0) 2013.03.27

+ Recent posts