본문 바로가기

Language/C, C++

[C] Call By Value 와 Call By Reference

1. Call By Value (값에 의한 호출)

  • 함수의 매개변수에 넣고자 하는 인자의 '값'을 복사한다.
  • 함수가 실행되면, 매개변수는 값만 같은 뿐 별개의 변수이다.
  • 함수가 종료되고 해당 스코프에 있던 매개변수는 사라지고, 원래 있던 인자에는 영향이 없음

2. Call By Reference (주소에 의한 호출, 참조에 의한 호출)

  • 인자의 '주소'를 매개변수에 복사한다.
  • 매개변수가 대상 인자의 주소값을 가지므로, 새로운 값을 업데이트 하는 등 영향을 준다.
/////// 실행 코드 ///////

#include <stdio.h>

void callByReference(int *input);
void callByValue(int input);

int main()
{
    int a = 100;
    printf("값 %d\n", a);

    callByValue(a);
    printf("Value : 값 %d\n", a);

    callByReference(&a);
    printf("Reference : 값 %d\n", a);
}

void callByReference(int *input)
{
    *input = 50;
}

void callByValue(int input)
{
    input = 30;
}

/////// 실행 결과 ///////

값 100
Value : 값 100
Reference : 값 50

'Language > C, C++' 카테고리의 다른 글

[ C ] scanf / scanf_s 차이점  (0) 2021.01.07