티스토리 뷰

🟩 오늘의 목표

  • 메모리 구조와 메모리 주소 개념을 이해한다.
  • 포인터와 배열의 관계를 정확히 설명할 수 있다.
  • 참조자의 개념과 포인터와의 차이를 구분한다.
  • Call by Value / Reference / Address 차이를 코드 흐름으로 이해한다.
  • 포인터·참조자 관련 문제를 손으로 추적하며 풀 수 있다.

 

🟧 알고리즘 특강 - 2 핵심 정리


🟦 메모리와 변수의 관계

  • 메모리는 연속된 저장 공간이며, 각 칸은 고유한 메모리 주소를 가진다.
  • 변수를 선언한다는 것은:
    • 메모리 공간을 확보하고
    • 해당 주소에 값을 저장한 뒤
    • 변수 이름으로 그 주소를 간접 참조하는 것
int val = 7;
  • val은 값 자체가 아니라 특정 메모리 주소에 붙은 이름표이다.

 

🟦 포인터의 개념

  • 포인터는 값이 아니라 주소를 저장하는 변수이다.
int val = 7;
int* p_val = &val;
  • p_val → 주소
  • *p_val → 해당 주소에 저장된 실제 값

포인터 산술 연산은 타입 크기 단위로 이동한다.

  • int* → 4바이트 단위
  • double* → 8바이트 단위

주의사항 : 잘못된 형변환은 메모리 참조 오류를 유발할 수 있다.

 

🟦 배열과 포인터의 관계

  • 배열 이름은 첫 번째 원소를 가리키는 상수 포인터처럼 동작한다.
int arr[5] = {1,2,3,4,5};
int* ptr = arr; // &arr[0]
  • 아래 두 표현은 동일하다.
arr[i] == *(arr + i)
  •  함수에 배열을 전달하면 포인터로 전달된다.
  •  배열 크기는 반드시 별도로 전달해야 한다.

🟦 동적 배열과 포인터

  • 실행 시간에 크기를 결정해야 할 때는 힙 메모리 사용
int size;
cin >> size;
int* arr = new int[size];
  • 사용 후 반드시 delete[] 필요
  • 실수 방지를 위해 std::vector 권장

 

🟧 참조자 (Reference)


🟦 참조자의 개념

  • 참조자는 기존 변수에 대한 별칭
int val = 7;
int& ref = val;
  • ref와 val은 완전히 동일한 메모리를 사용

 참조자 :

  • 반드시 초기화 필요
  • 한 번 참조 대상이 정해지면 변경 불가
  • null 개념 없음

 

🟦 포인터 vs 참조자 (내가 궁금했던 비교)

구분 포인터 참조자
null 가능 O X
대상 변경 가능 불가능
문법 간접 참조 필요 직접 사용
안정성 낮을 수 있음 상대적으로 높음

🟦 함수 매개변수에서의 활용

void increase(int& x) { x += 10; }
void increase2(int x) { x += 10; }
  • 참조자 → 원본 변경 (Call by Reference)
  • 값 복사 → 원본 유지 (Call by Value)

동적 메모리 관리가 필요 없다면 참조자를 우선 고려

 

🟧 오늘 풀어본 문제 정리


🟦 문제 1 (포인터 산술)

int arr[] = {10, 20, 30, 40, 50};
int* ptr = arr;
ptr += 2;
ptr[1] = *ptr + 10;
  • ptr → arr[2] (30)
  • *ptr = 30
  • ptr[1] → arr[3]
  • arr[3] = 30 + 10 = 40

 최종 arr :

{10, 20, 30, 40, 50}

(기존 값과 동일하지만 계산 흐름이 핵심)

🟦 문제 2 (참조자 + 포인터 혼합)

void foo(int& x, int* y) {
    x = *y;
    *y = 30;
    y = &x;
    *y = 40;
}
int a = 10;
int b = 20;
foo(a, &b);

 

  • x → a, y → &b
  • a = b → a = 20
  • b = 30
  • y = &a
  • a = 40

최종 결과 :

  • a = 40
  • b = 30

 

🟫 오늘 느낀 점

포인터·참조자는 문법보다 메모리 흐름을 손으로 따라가는 연습이 훨씬 중요하다는 걸 확실히 느꼈다.

'내일배움캠프 Unreal_7기 > 본캠프' 카테고리의 다른 글

TIL - 14일차  (0) 2025.12.17
TIL - 13일차  (0) 2025.12.16
TIL - 11일차  (1) 2025.12.11
TIL - 10일차  (0) 2025.12.10
TIL - 9일차  (0) 2025.12.09