티스토리 뷰
🟩 오늘의 목표
- 포인터와 레퍼런스의 개념을 이해하고 차이를 구분할 수 있다.
- 주소값, 역참조, 타입의 의미를 학습하고 실제 코드에서 활용할 수 있다.
- 배열·포인터·레퍼런스의 관계를 이해하고 올바르게 사용하는 법을 익힌다.
🟧 C언어 기초 세션 – 포인터 & 레퍼런스
🟦 포인터 핵심 개념
- 포인터는 값이 아니라 주소를 저장하는 변수이다.
- int* p; 는 “정수를 가리키는 포인터”라는 의미.
- &변수 → 주소값, *포인터 → 해당 주소의 실제 값(역참조).
- 포인터는 타입 정보가 꼭 필요함 → 주소에서 값을 읽어올 크기를 알기 때문.
🟦 주요 내용
- 일반 변수 대입은 “값 복사”, 포인터는 “주소 전달”
- 복사 비용이 큰 배열을 포인터로 넘기면 효율적
- 포인터 연산: p + 1 은 포인터 타입 크기만큼 주소가 증가
- 잘못된 포인터 접근은 위험하므로 nullptr 체크 필수
- 배열 이름은 “배열의 시작 주소”이므로 변경 불가능
- *(ptr + i) 는 ptr[i] 와 동일
🟧 배열 & 포인터 관계
🟦 배열 이름의 의미
- 배열 이름은 “배열의 첫 번째 주소”를 뜻함
- 인덱스로 접근 가능한 이유: 메모리가 연속 배치
- 배열 이름은 상수 취급 → 다른 주소로 대입 불가
🟦 포인터와의 차이
- 포인터는 “주소를 담는 변수”, 따라서 크기가 고정
- 배열은 “데이터 묶음”이므로 크기가 타입 × 개수
🟧 포인터 배열 & 배열 포인터
🟦 두 개념 차이
- 포인터 배열: 포인터들을 여러 개 담은 배열
- 예: int* ptrArr[4];
- 배열 포인터: 배열 전체를 가리키는 포인터
- 예: int (*arrPtr)[4];
둘의 차이를 파악해야 다차원 배열 제어가 더 쉬워짐.
🟧 레퍼런스 (Reference)
🟦 핵심 개념
- 레퍼런스는 변수의 또 다른 이름(별명)
- 선언과 동시에 초기화해야 하며, 이후 다른 변수로 변경 불가
- NULL이 존재할 수 없음(항상 유효한 대상 필요)
- 사용 시 *, & 같은 간접 참조 연산이 필요 없음
- 완전한 변수처럼 동작
🟦 const 레퍼런스
- 복사 없이 원본 값을 읽을 수 있게 해주는 “읽기 전용 레퍼런스”
- 함수 매개변수 최적화에서 자주 사용됨
🟫 오늘 느낀 점
포인터와 레퍼런스의 개념이 아직 완전히 익숙하진 않지만, 메모리 흐름을 이해하는 감각이 조금씩 잡혀가는 느낌이었다.
'내일배움캠프 Unreal_7기 > 본캠프' 카테고리의 다른 글
| TIL - 10일차 (0) | 2025.12.10 |
|---|---|
| TIL - 9일차 (0) | 2025.12.09 |
| TIL - 7일차 (1) | 2025.12.05 |
| TIL - 6일차 (0) | 2025.12.04 |
| TIL - 5일차 (0) | 2025.12.03 |

