이번 Step에서 잡아야 할 것
- 변수 = 이름 붙은 메모리 공간
- 타입(Type): 그 공간에 “무슨 형태의 값”을 저장할지(크기/해석 방식)
- 기본 사용: 선언(공간 확보) → 대입(쓰기) → 사용(읽기)
HP를 관리한다고 가정
게임에서 HP 같은 데이터를 관리하려면 결국 아래 3가지를 반복합니다.
- 공간 확보(선언): HP를 담을 메모리 공간이 필요함
- 데이터 넣기(쓰기): 시작 HP 100 같은 값을 저장
- 사용(읽기/갱신): 꺼내서 연산하고 다시 저장 (피격/회복 등)
메모리 주소
- RAM의 모든 바이트에는 주소(address)가 있습니다. (예: 0x0000..., 0x7FF... 같은 형태)
- 하지만 주소를 매번 직접 다루면 어렵고 실수하기 쉽습니다.
- 그래서 변수 이름으로 주소를 “가려서” 간접적으로 메모리를 사용합니다.
변수 = 상자(바구니)
RAM 어딘가
┌──────────────┐
│ hp = 100 │ ← 이름(hp)로 접근
└──────────────┘
(주소는 내부적으로 관리)
- 크기: 데이터에 맞게 (HP는 정수 → 4바이트 등)
- 이름: HP라고 부르기로 함
- 역할: 메모리 공간 임대 + 이름 부여
변수 사용 3단계
| 단계 | 의미 | 예시 |
|---|
| 1. 선언(확보) | 저장 공간을 마련 | int hp; |
| 2. 쓰기(대입) | 값을 넣음 | hp = 50; |
| 3. 읽기(사용) | 값을 꺼내 사용 | cout << hp; |
간단 예시는 이렇게 이어집니다.
int hp = 100;
hp -= 10;
cout << hp;
체크 질문 (스스로 답해보기)
- 변수는 “주소”를 어떻게 다루기 쉽게 만들어줄까?
int를 붙이는 이유는 뭘까? (크기/해석 방식 관점에서)
- 선언과 대입은 같은 행위일까? 다르다면 각각 무엇을 의미할까?