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 |