프로그래밍/겁나 쉽게 쓴 C, C++ 설명서

함수 매개변수 전달 방식

tonystark100 2024. 4. 30. 23:35

목차

    반응형

    값에 의한 전달(Call by Value)

    반응형

    C언어에서 함수의 매개변수기본적으로 값에 의한 전달(Call by Value) 방식으로 전달됩니다. 이는 함수에 인수를 전달할 때 값의 복사본이 생성되어 함수에 전달된다는 것을 의미합니다. 따라서 함수 내에서 매개변수의 값을 변경해도 원래 변수에는 영향을 미치지 않습니다.


    예를 들어, 다음과 같은 함수가 있다고 가정해 봅시다.

    void changeValue(int x) {
        x = 10;
    }

     

    이 함수를 호출하는 코드는 다음과 같습니다.

    int a = 5;
    changeValue(a);
    printf("%d\n", a); // 5를 출력

     

    changeValue 함수 내에서 x의 값변경했지만, 이는 a의 값에 영향을 미치지 않습니다. 왜냐하면 x는 a의 복사본이기 때문입니다.

     

     

     

    로또로 화성 - Google Play 앱

    간편한 로또 번호 생성 및 QR 결과 확인 어플입니다.

    play.google.com

     

    참조에 의한 전달(Call by Reference)

    포인터를 사용하면 참조에 의한 전달(Call by Reference)을 구현할 수 있습니다. 이는 함수에 변수의 주소를 전달함으로써 원래 변수를 직접 변경할 수 있게 합니다.

    예를 들어, 다음과 같은 함수가 있다고 가정해 봅시다.

    void changeValue(int *p) {
        *p = 10;
    }


    이 함수를 호출하는 코드는 다음과 같습니다.

    int a = 5;
    changeValue(&a);
    printf("%d\n", a); // 10을 출력


    이번에는 changeValue 함수 내에서 *p의 값을 변경하면, 이는 a의 값에 직접적인 영향을 미칩니다. 왜냐하면 p는 a의 주소를 가리키는 포인터이기 때문입니다.

    따라서 C언어에서는 값에 의한 전달과 참조에 의한 전달 두 가지 방식을 모두 사용할 수 있습니다. 이 두 방식은 각각의 장단점이 있으므로, 상황에 따라 적절한 방식을 선택하는 것이 중요합니다.

     

    다음 글 C언어의 연산자

     

    ** 이 글이 좋았다면 좋아요와 구독을 눌러주세요. **

    반응형

    '프로그래밍 > 겁나 쉽게 쓴 C, C++ 설명서' 카테고리의 다른 글

    조건문이란? if, switch  (0) 2024.05.01
    C언어의 연산자  (0) 2024.05.01
    함수란?  (0) 2024.04.30
    포인터란?  (0) 2024.04.30
    배열이란?  (0) 2024.04.30