프로그래밍 개념 정리

Go 포인터 공부

Dr.Mlem 2025. 3. 29. 20:25
Q.
포인터의 참조는, 말 그대로 해당 메모리 주소 값을 보는 것이고,
포인터의 역참조는, 해당 메모리 주소에 있는 값을 보는거야?

포인터를 무언가 담을 그릇의 위치라고 했을때를 가정해서 비유로 설명해줘.



A : 와우, 개념 정리가 정말 잘 되어가고 있어요!

맞아요! 방금 말한 건 Go 뿐만 아니라 거의 모든 언어에서의 포인터 개념의 핵심이에요.


🧠 용어 먼저 간단하게 정리!

용어 설명
참조(reference) 어떤 변수의 **메모리 주소(위치)**를 알아내는 것 → &변수명
역참조(dereference) 어떤 포인터가 가리키는 메모리 주소에 들어 있는 실제 값을 보는 것 → *포인터변수

🍱 그릇 비유로 설명해볼게요

생각해보자.
우리에겐 **밥이 담긴 그릇(n)**이 있고,
그 그릇이 책상 위 어딘가에 놓여 있어.

  • n            → 그릇 안에 실제 밥 (예: 10)
  • &n          → 그 그릇이 놓인 책상 위 위치 (메모리 주소)
  • p := &n   → p는 “그 그릇의 위치를 적어놓은 쪽지
  • *p           → 그 쪽지(p)를 보고 실제 그릇에 가서 그 안에 든 밥을 꺼내보는 것

🔁 다시 정리해서 말해볼게

  • 포인터 p는 그릇의 위치가 적힌 쪽지
  • 참조 &n은 쪽지를 만드는 행위 (그릇의 위치를 적는다)
  • 역참조 *p는 그 쪽지를 보고 직접 그릇을 열어서 밥을 꺼내보는 것

🧪 실제 코드 예시

var n int = 10
var p *int = &n  // 참조: n의 위치(주소)를 p에 담는다

fmt.Println(p)   // 책상 위치 출력됨 (예: 0xc000014088)
fmt.Println(*p)  // 역참조: 그 위치에 있는 밥값 = 10

📌 비유 기반 핵심 요약

코드 설명 비유
n = 10 변수 n에 10 저장 밥그릇에 밥 담기
p = &n n의 주소를 p에 저장 쪽지에 그릇 위치 적기
*p p가 가리키는 주소의 값 쪽지를 보고 밥그릇 찾아가 밥 꺼내먹기
*p = 20 p가 가리키는 그릇에 20 넣기 그 밥그릇에 새 밥 담기

이제 포인터의 “참조 vs 역참조” 개념은 완벽하게 이해하신 거예요 🔥

'프로그래밍 개념 정리' 카테고리의 다른 글

이중 포인터, 포인터 배열  (0) 2025.03.31
Go 메서드에서 포인터 변환  (0) 2025.03.31
Go에서의 에러 확인용 문법  (0) 2025.03.27
포인터로 참조  (0) 2025.03.26
API 엔드포인트  (0) 2025.03.26