Menu
Coddy logo textTech

역참조 연산자

Coddy C++ 여정의 로직과 흐름 섹션에 포함된 레슨 — 56개 중 3번째.

이제 변수에 대한 포인터를 얻을 수 있게 되었으므로, 해당 메모리 주소에 있는 값을 액세스하고 수정하는 방법을 배워야 합니다. 여기서 역참조 연산자(*)가 필수적이게 됩니다.

역참조 연산자 *는 포인터가 가리키는 메모리 주소에 저장된 값에 접근하는 데 사용됩니다. 포인터 변수 앞에 *를 붙이면, 해당 주소를 "따라가서" 그곳에 저장된 실제 값을 제공합니다.

int number = 42;
int* ptr = &number;  // ptr은 number의 주소를 저장합니다
int value = *ptr;    // value는 이제 42를 포함합니다

역참조 연산자를 사용하여 포인터를 통해 원래 변수를 수정할 수도 있습니다. *ptr에 새로운 값을 할당하면, 실제로 해당 메모리 위치에 저장된 값을 변경하는 것입니다:

*ptr = 100;  // number를 100으로 변경합니다
// ptr을 통해 수정했음에도 불구하고 이제 number는 100입니다

이러한 간접적인 접근 방식은 포인터를 매우 강력하게 만듭니다. 해당 변수에 대한 포인터만 있다면 프로그램의 어디에서나 변수를 읽고 수정할 수 있습니다.

challenge icon

챌린지

쉬움

포인터를 통해 변수의 값을 수정함으로써 역참조 연산자를 시연하는 프로그램을 작성하세요.

다음과 같은 입력이 제공됩니다:

  • 변수의 초기값을 나타내는 정수
  • 포인터를 통해 할당할 새로운 값을 나타내는 정수

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

  1. temperature라는 이름의 정수형 변수를 선언하고 첫 번째 입력값으로 초기화합니다.
  2. temperature 변수를 가리키는 tempPtr라는 이름의 포인터를 생성합니다.
  3. 포인터를 역참조하여 원래 값을 출력합니다.
  4. 역참조 연산자를 사용하여 포인터를 통해 temperature의 값을 두 번째 입력값으로 변경합니다.
  5. 포인터를 다시 역참조하여 새로운 값을 출력합니다.

다음과 같은 정확한 출력 형식을 사용하세요:

Original value: [original value]
New value: [new value]

치트 시트

역참조 연산자 *는 포인터가 가리키는 메모리 주소에 저장된 값에 접근하는 데 사용됩니다:

int number = 42;
int* ptr = &number;  // ptr stores the address of number
int value = *ptr;    // value now contains 42

또한 역참조 연산자를 사용하여 포인터를 통해 원래 변수를 수정할 수도 있습니다:

*ptr = 100;  // Changes number to 100
// number is now 100, even though we modified it through ptr

이러한 간접 접근 방식을 사용하면 포인터만 있다면 프로그램의 어디에서나 변수를 읽고 수정할 수 있습니다.

직접 해보기

#include <iostream>
using namespace std;

int main() {
    // 입력 값 읽기
    int initialValue, newValue;
    cin >> initialValue;
    cin >> newValue;
    
    // TODO: 아래에 코드를 작성하세요
    // 1. temperature 변수를 선언하고 initialValue로 초기화
    // 2. temperature를 가리키는 tempPtr 포인터 생성
    // 3. 포인터 역참조를 사용하여 원래 값 출력
    // 4. 포인터를 사용하여 temperature 값을 newValue로 변경
    // 5. 포인터 역참조를 사용하여 새로운 값 출력
    
    return 0;
}
quiz icon실력 점검

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

로직과 흐름의 모든 레슨