본문 바로가기
IT/c언어

C 언어에서 값에 의한 호출 (Call by Value)

by 뉴코딩맨 2023. 7. 13.
C 언어에서 함수를 호출할 때 인수(argument)를 전달하는 방식 중 하나인 "값에 의한 호출"에 대해 알아보겠습니다. 값에 의한 호출은 함수에 인수를 전달할 때, 인수의 값을 복사하여 함수의 매개변수(parameter)에 전달하는 방식입니다. 이렇게 전달된 매개변수는 함수 내에서 사용되는 동안에만 유효하며, 함수 외부에서의 변경은 함수에 영향을 주지 않습니다.
 
 

값에 의한 호출의 예제

아래의 예제를 통해 값에 의한 호출을 이해해보겠습니다.
 
#include <stdio.h>

void increment(int num) {
    num++;
    printf("함수 내에서의 값: %d\n", num);
}

int main() {
    int number = 10;
    printf("함수 호출 전의 값: %d\n", number);
    increment(number);
    printf("함수 호출 후의 값: %d\n", number);

    return 0;
}
 
위의 예제에서는 increment라는 함수를 선언하고 정의합니다. 이 함수는 num이라는 매개변수를 받아 값을 증가시키고 출력하는 역할을 합니다. main 함수에서는 number라는 변수를 선언하고 초기값을 할당한 후, increment 함수에 number를 전달합니다. 그리고 함수 호출 전과 후에 number의 값을 출력합니다.
 
 

결과와 설명

위의 예제를 실행하면 다음과 같은 결과가 출력됩니다.

 

함수 호출 전의 값: 10
함수 내에서의 값: 11
함수 호출 후의 값: 10
 
함수 호출 전에 number의 값은 10으로 초기화되었습니다. 그러나 increment 함수 내에서 num 값이 증가되었을 때는 함수 내부에서만 유효한 로컬 변수로 증가된 값인 11이 출력됩니다. 함수 호출이 끝나고 다시 main 함수로 돌아오면 number의 값은 여전히 호출 전의 값인 10으로 유지됩니다. 이는 값에 의한 호출이기 때문에 함수 내에서의 변경이 함수 외부로 전파되지 않기 때문입니다.
 

결론

C 언어에서 값에 의한 호출은 함수에 인수를 전달할 때, 인수의 값을 복사하여 전달하는 방식입니다. 이를 통해 함수 내에서 인수의 값을 변경하더라도 함수 외부에서의 변수에는 영향을 주지 않습니다. 따라서 값을 보존하면서 함수를 호출하고자 할 때에는 값에 의한 호출을 사용할 수 있습니다.
 

 

댓글