본문 바로가기

▶Programming/C

call by value VS call by reference PART.1

이게 무엇인가! 먼저 정의를 내린 후에 내용을 설명하는게 좋겠다.

C언어에는 함수라는 중요한 녀석이 있다.

여기서 함수는 우리가 중,고등학교 시절에 배우던 그 함수가 맞다.

y=x+3 이라는 함수를 보면 바로 이해가 될 것이다.

여기서 우리가 원하는 결과 값이 y이고 우리가 집어넣어야 하는 x 가 바로 인수(argument)가 된다.

여기서 x에 숫자(값)를 넣을 것인가? 아니면 다른 것을 넣을 것인가? 에 따라 부르는 용어가 달라진다.

<참고자료> 매개변수 와 인자의 관계



즉, 정리를 하자면 우리가 구할 y를 위해 x에 숫자(특정한 값)를 넣는 방식을 call by value(값에 의한 전달)라 하고,

x에 값이 아닌 주소나 포인터변수 등을 넣는 것이 call by reference(참조에 의한 전달)이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
void ShowArayElem(int *param, int len)
 
{
 
    int i;
 
    for (i = 0; i < len; i++)
 
        printf("%d", param[i]);
 
    printf("\n");
 
}
 
 
 
int main(void)
 
{
 
    int arr1[3] = { 1, 2, 3 };
 
    int arr2[5] = { 4, 5, 6, 7, 8 };
 
    ShowArayElem(arr1, sizeof(arr1) / sizeof(int));
 
    ShowArayElem(arr2, sizeof(arr2) / sizeof(int));
 
    return 0;
 
}
cs

/*결과값*/