Menu
Coddy logo textTech

역참조 연산자 (*)

Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 4번째.

이제 포인터에 주소를 저장하는 방법을 알게 되었으므로, 해당 메모리 주소에 저장된 실제 값에 액세스하는 방법을 배워야 합니다. 역참조 연산자(*)를 사용하면 포인터를 "따라가서" 포인터가 가리키는 값을 가져올 수 있습니다.

포인터 변수 앞에 * 연산자를 배치하면, 포인터가 가리키는 메모리 주소에 저장된 값에 접근합니다. "이 주소에 있는 방 안에 무엇이 있는지 알려줘"라고 말하는 것과 같다고 생각하세요.

int age = 25;
int *ptr = &age;
printf("%d", *ptr);    // 25를 출력합니다 - age의 값

C 언어에서 별표(*)는 두 가지 서로 다른 의미를 갖는다는 점을 이해하는 것이 중요합니다. int *ptr;와 같이 포인터를 선언할 때, 별표는 ptr이 포인터임을 나타냅니다. *ptr과 같이 기존 포인터와 함께 사용될 때는, 포인터가 가리키는 값에 접근하기 위해 포인터를 역참조합니다.

역참조 연산자는 포인터 사이클을 완성하기 때문에 필수적입니다. &를 사용하여 포인터에 주소를 저장하고, *를 사용하여 해당 주소에 있는 값을 가져올 수 있습니다. 이를 통해 메모리 주소를 통해 변수에 간접적으로 접근하고 수정할 수 있습니다.

challenge icon

챌린지

쉬움

포인터의 선언, 주소 할당, 그리고 역참조(dereferencing)를 포함하는 전체 워크플로우를 보여주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:

  1. value라는 이름의 정수형 변수를 선언하고 75로 초기화합니다.
  2. price라는 이름의 실수형(float) 변수를 선언하고 19.99로 초기화합니다.
  3. 정수형을 가리키는 포인터 value_ptr를 선언합니다.
  4. 실수형을 가리키는 포인터 price_ptr를 선언합니다.
  5. 주소 연산자(address-of operator)를 사용하여 value의 주소를 value_ptr에 할당합니다.
  6. 주소 연산자를 사용하여 price의 주소를 price_ptr에 할당합니다.
  7. 역참조 연산자(dereference operator)를 사용하여 value_ptr를 통해 value의 값을 출력합니다.
  8. 역참조 연산자를 사용하여 price_ptr를 통해 price의 값을 소수점 둘째 자리까지 출력합니다.

출력 결과는 다음과 같은 형식으로 역참조된 값을 표시해야 합니다:

Value through pointer: 75
Price through pointer: 19.99

이 챌린지는 역참조 연산자가 포인터에 저장된 주소를 따라가서 원래 변수의 값을 어떻게 가져오는지에 대한 이해도를 테스트합니다.

치트 시트

역참조 연산자(*)를 사용하면 포인터가 가리키는 메모리 주소에 저장된 값에 접근할 수 있습니다.

int age = 25;
int *ptr = &age;
printf("%d", *ptr);    // 25를 출력합니다 - age의 값

별표(*)는 C 언어에서 두 가지 다른 의미를 가집니다:

  • int *ptr;와 같은 선언에서 - ptr이 포인터임을 나타냅니다.
  • *ptr과 같이 기존 포인터와 함께 사용될 때 - 포인터를 역참조하여 포인터가 가리키는 값에 접근합니다.

역참조 연산자는 포인터 사이클을 완성합니다: &로 주소를 저장한 다음, *로 해당 주소의 값을 가져옵니다.

직접 해보기

#include <stdio.h>

int main() {
    // TODO: 여기에 코드를 작성하세요
    // 1. 변수 선언 및 초기화
    // 2. 포인터 선언
    // 3. 포인터에 주소 할당
    // 4. 역참조된 값 출력
    
    return 0;
}
quiz icon실력 점검

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

Logic & Flow의 모든 레슨