Menu
Coddy logo textTech

포인터를 통한 변수 수정

Coddy C 여정의 논리 & 흐름 섹션에 포함된 레슨. 63개 중 27번째.

이제 포인터의 진정한 힘을 활용할 수 있습니다: function을 통해 original variable 수정하기. 포인터를 function에 전달하면, function은 역참조 연산자를 사용하여 해당 메모리 address에 저장된 값을 변경할 수 있습니다.

함수 내부에서 * 연산자를 사용해 포인터를 역참조하여 원래 변수의 값에 접근하고 수정합니다. 이 기법을 참조에 의한 전달이라고 하는데, 메모리에서 변수의 위치에 대한 참조를 전달하기 때문입니다.

void doubleValue(int *ptr) {
    *ptr = *ptr * 2;  // Dereference to modify the original value
}

int main() {
    int x = 5;
    doubleValue(&x);  // x의 주소를 전달
    // x는 이제 10입니다!
    return 0;
}

핵심은 대입문의 왼쪽에 *ptr을 사용하여 포인터가 보유한 메모리 주소의 값을 수정하는 것입니다. 이를 통해 function은 호출한 function의 variable을 영구적으로 변경할 수 있으며, 값에 의한 전달만으로는 달성할 수 없는 강력한 프로그래밍 가능성을 열어 줍니다.

challenge icon

챌린지

쉬움

정수의 값을 3배로 만드는 function을 생성하여 포인터를 통해 변수를 수정하는 C 프로그램을 작성하세요.

프로그램은 다음을 수행해야 합니다.

  1. tripleValue라는 이름의 function을 생성하고, 매개변수로 정수에 대한 포인터를 받습니다.
  2. tripleValue function 내부에서 역참조 연산자를 사용하여 memory address의 값을 3배로 곱합니다.
  3. tripleValue function 내부에서 새 값을 다음 형식으로 출력합니다: Value tripled to: [value]
  4. main function에서 number라는 이름의 정수 변수를 Declare하고 값 8로 initialize합니다.
  5. Original 값을 다음 형식으로 출력합니다: Original value: [value]
  6. address-of 연산자를 사용하여 number 변수의 address를 전달하면서 tripleValue function을 호출합니다.
  7. function 호출 후 number의 Final 값을 다음 형식으로 출력합니다: Final value: [value]

출력 결과는 포인터를 통해 function이 Original variable을 성공적으로 수정한다는 것을 보여 주어야 합니다.

Original value: 8
Value tripled to: 24
Final value: 24

이 challenge는 포인터를 사용하는 pass-by-reference의 강력한 기능을 보여 줍니다. function은 포인터를 역참조하고 해당 memory location의 값을 변경하여 Original variable을 영구적으로 수정할 수 있습니다.

직접 해보기

#include <stdio.h>

// TODO: 여기에 tripleValue 함수를 작성하세요

int main() {
    // TODO: 여기에 코드를 작성하세요
    // number 변수를 선언하고 초기화하세요
    // Print the original value
    // tripleValue 함수를 호출하세요
    // 최종 값을 출력하세요
    
    return 0;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리 & 흐름의 모든 레슨

직접 연습해 보세요: 온라인 C 컴파일러