본문 바로가기

근성 Program/C & C++

call by value // call by reference(point) // call by reference Part. 2


그럼 당연히 call by reference라는 함수에 대하여 알아보자

우선 포인터를 사용하는 방법을 알아 보도록 하자

----------------------------------
#include <stdio.h>
void swap(int* pa, int* pb);
int main()
{
 int a = 10,  b = 20;
 printf("--최초 설정 출력--\n");
 printf("a = %d  , b = %d\n",a,b);
 
 swap(&a, &b);

 printf("--swap함수 후 출력--\n");
 printf("a = %d  , b = %d\n",a,b);

 return 0;
}


void swap(int *pa, int* pb)
{
 int temp = *pa;
 *pa = *pb;
 *pb = temp;
}
--------------------------------
이번에 봐야 할 곳들은 붉은색으로 써져 있는 부분이다
먼저 swap함수 호출 부분을 보자
call by value에서는 그냥 변수를 인자로 넘겨 주었지만
이번에는 변수의 주소를 넘겨 주고 있다

결국 swap함수에서도 주소를 받기위해서 포이터로 주소 값을 받아 왔고
point가 된 주소를 역참조해서 값을 swap하고 있다
결국 변수 a,b에 간접적으로 간섭을하여 값을 변경하고 있기 때문에
swap함수를 나왔어도 값이 변경되어 있다

출력 결과를 보자



이와 같은 것을 call by reference라고한다

다음엔 좀더 다른 call by reference를 배워 보자