EP.3-1 포인터

EP.3-1 포인터: 메모리 단자대와 원격 제어의 시작 | 제어 엔지니어 구조 분석

Phase 3: Memory & Address Control

EP.3-1 포인터 — 메모리 단자대와 원격 제어

"위치"를 알면 "권한"이 생깁니다. 주소라는 좌표를 다루는 기술.

포인터는 '닉네임 리모컨'이다

포인터를 배우다 포기하는 이유는 단순합니다. "주소를 담는 변수"라는 따분한 정의에 갇히기 때문입니다. 하지만 현장의 엔지니어에게 포인터는 '복잡한 메모리 주소를 대신하는 스마트한 닉네임 리모컨'입니다.

0x0012FF7C 같은 복잡한 주소 번호를 직접 외울 수는 없습니다. 대신 그 주소를 ptr이라는 이름의 리모컨에 저장해두고, 필요할 때마다 버튼 하나로 그 위치의 데이터를 원격 제어하는 것, 이것이 포인터의 본질입니다.

📍 포인터의 원초적 구성 요소
  • & (Address-of): "이 상자가 창고의 몇 번째 선반(주소)에 있지?" → 주소 추출기
  • * (Dereferencing): "그 선반 번호로 직접 가서 문을 열어!" → 원격 침투기
  • 포인터 변수 (Pointer): 선반 번호를 적어두는 메모지

2. 포인터의 이중생활: 선언과 실행

똑같은 * 기호라도 쓰이는 위치에 따라 의미가 완전히 달라집니다. 이것은 장비의 [설치 모드]와 [운전 모드]의 차이와 같습니다.

① 설치 모드 (선언)

int *ptr;
"정수 전용 리모컨을 하나 만들겠다"는 신분증 발급입니다.

② 배선 연결 (할당)

ptr = ⌖
target의 위치 정보를 리모컨에 입력하여 무선 연결을 마칩니다.

③ 운전 모드 (역참조)

*ptr = 500;
리모컨 버튼 작동! 그 위치로 직접 찾아가서 값을 수정합니다.

3. ⚡ 실습: 리모컨 배선 및 원격 제어 테스트

실제 메모리 주소를 테스터기로 찍어보듯 확인하고, 원격으로 값을 수정해보는 기초 공정입니다.

#include <stdio.h>

int main() {
    // 1. 실제 상자(변수) 생성 및 물건(값) 적재
    int target = 100;

    // 2. 리모컨(포인터) 선언 - [설치 모드]
    int *ptr;

    // 3. 리모컨에 상자의 위치(주소) 입력 - [배선 연결]
    ptr = ⌖

    printf("=== [시운전 1단계: 초기 상태 확인] ===\n");
    printf("target 상자의 값: %d\n", target);
    printf("target 상자의 주소(&target): %p\n", (void*)&target);
    printf("리모컨(ptr)에 저장된 번호: %p\n\n", (void*)ptr);

    // 4. 리모컨을 이용한 원격 수정 - [운전 모드]
    *ptr = 500;

    printf("=== [시운전 2단계: 원격 제어 후 결과] ===\n");
    printf("현재 target 상자의 값: %d (원격 수정 완료)\n", target);

    printf("리모컨(ptr)에 저장된 번호: %p\n\n", (void*)ptr);     return 0;
}

▲ 실습 결과 : 주소 값과 결과 값 출력

왜 타입을 정해야 하는가? (int*, char*)

"주소는 다 똑같은 숫자인데 왜 굳이 정수형 포인터, 문자형 포인터를 나눌까?"라는 의문이 생길 수 있습니다. 이는 리모컨이 주소지로 찾아갔을 때, 데이터가 몇 칸(Byte)짜리인지 알아야 정확히 수정할 수 있기 때문입니다.

  • int*: "여기서부터 4칸이 네 구역이야!"
  • char*: "딱 1칸만 네 구역이야!"

이 크기를 잘못 알면 옆집 데이터를 오염시키는 치명적인 '메모리 사고'가 발생합니다.

🛠️ 마스터의 시운전 메모

포인터는 단순히 주소를 저장하는 통이 아닙니다. 주소라는 '복잡한 좌표'를 '제어 가능한 닉네임'으로 바꾸어, 거리의 제약 없이 데이터에 접근할 수 있는 권한을 획득하는 과정입니다.

© 2026 ZIN PARK · MASTERING CONTROL ENGINEERING SERIES
"닉네임을 통해 주소로 침투하는 순간, 당신은 메모리의 설계자가 된다."

댓글

이 블로그의 인기 게시물

EP.0 코딩의 첫걸음 — 전기를 어떻게 연결할 것인가?

EP.0-1 천공카드

EP.1-1트랜지스터