매개변수 구현 방법 ( Call-by-Value, Call-by-Reference)

2016. 7. 5. 11:46C,C++

함수간에 매개변수를 통한 자료 전달 기법은 구현방법에 따라 크게 3가지

call-by-value, call-by-reference, call-by-name 등으로 구분 할 수 있으며, C, C++ 에서는 Call-by-value, Call-by-Reference의 방법이 있다. 피 호출함수의 매개변수를 형식 매개변수 ( formal parameter) 라 하고, 함수 호출문의 매개변수를 실 매개변수 (actual parameter)라 합니다.

실 매개변수는 변수, 상수, 식 또는 함수가 될 수 있으나., 형식 매개변수는 단일변수 이외의 식이나 상수로는 작성 할 수 없다.

 

void Function1( int a, int b) -> 형식 매개변수

 

main() {

..

int bb;

..

Function1( 4, bb); -> 실 매개변수

..

}

 

-Call-by-Value

 

Call-by-Value는 단순히 실 매개변수를 형식 매개변수에 복사함으로 구현한다.

함수가 실행 중 매개변수 값이 변경하여도 변경 되지 않는다.

 

void Function2( int a, int b) {

 

           a= 4;

           b= 6;

}

 

main() {

           int a=3;

           int b=4;

           Function2( a, b);

}

 

-> a =3, b=4

 

-Call-by-reference

 

참조에 의한 호출, 주소 값을 인자로 전달하는 호출 방식을 말한다.

 

void function3 int *a, int *b)  {

 

           *a= 4;

           *b= 5;

}

main () {

 

           int a=3;

           int b=4;

 

           function3(&a, &b);

}

 

-> a = 4, b = 5 call-by-Value 와는 다르게 주소 값을 인자로 전달하기에 값 변경 시 , 실 매개변수의 원본 값이 변경 됨