함수의 인수 전달 방법

함수의 호출에서 인수(파라메터)의 전달 방법은 값을 전달하는 방법과 주소를 전달, 호출하는 방법이 있다.

 

먼저 값을 전달하는 방법부터 살펴보자

call by value 라고 하며 값 호출 방식이다.

이 방식은 실인수의 값이 형식인수로 전달되는 방식이다.

다음 예제를 보자

 

int plus(int a, int b )
{
         int plus_value;
         plus_value = a + b;
         return plus_value;
}

int main()
{
       int value1;
       int value2;
       int i;
       
       value1 = 5;
       value2 = 1;

       i = plus (value1, value2);
       printf("value1 + value2 = %d\n", i);

       return 0;

 

함수 호출시 전달되는 대상이 실인수 그 자체가 아니라 실인수의 값이기 때문에 이런 호출 방식을 값 호출이라고 한다.

 

다음으로는 주소 전달 방식을 보자

call by reference 라고 하며 참조 호출 방식이라고 한다.

이방식은 변수의 주소값을 피호출자의 형식인수에게 넘겨주는 방식이다.

다음 예제를 보자

 

int plus(int a, int b )
{
         int plus_value;
         plus_value = a + b;
         return plus_value;
}

void plus_one( int* value)
{
       *value =  *value+1;
}

int main()
{
       int value1;
       int value2;
       int i;
       
       value1 = 5;
       value2 = 1;

       i = plus (value1, value2);
       printf("value1 + value2 = %d\n", i);

       plus_one(&i);
       printf("i = %d\n", i);


       return 0;

 

 

function4-1.png

참조 호출방식은 실인수의 값을 전달하는 것이 아니라 실인수의 번지를 전달 하므로 i의 값을 직접 참조 할 수 있다.