강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

sadfsa12님의 프로필 이미지
sadfsa12

작성한 질문수

홍정모의 따라하며 배우는 C++

6.8 포인터와 정적 배열

포인터 자체의 주소 질문입니다.

작성

·

229

3

5분10초쯤에 포인터 자체의 주소, &ptr을 하면 ptr과 당연 다르게 나오는데 이것은 서로 가르키는 주소가 달라서 그런것인가요?

ptr은 array의 첫번째 원소의 주소를 나타내는것이고 , &ptr은 주소의 주소를 나타내는것이기에 다른것인가요? 감사합니다!

답변 1

2

안녕하세요!

포인터도 변수라고 생각하시면 이해하실 수 있을겁니다.

int a = 3; 에서 a 는 변수이며 a 의 '값'은 3 이고(즉 a 라는 이름의 메모리 안에 담긴 내용물이 3)

a 의 '주소'(&a) 는 따로 있겠죠. 

집 안에 있는 내용물(값)과 집의 주소는 별개라는 개념을 이해하실 것입니다.

이와 마찬가지로 포인터는 주소를 담는 변수라고 생각하시면 됩니다.

int * ptr = array 이런 식이 있다면, ptr 은 int * 타입의 내용물(즉, "int 값을 담는 메모리의 주소"가 내용물인 것)들을 담을 수 있는 집이며, 현재의 내용물(값)은 array 인거에요. 즉, array 첫번째 원소의 주소가 이 ptr 메모리 안에 담겨있는 값이겠죠.

반면 &ptr 은 주소죠. 이 ptr 메모리(집)이 위치한 주소! 즉 집 주소입니다. 

 풀어말해보자면 ptr 은 ptr 메모리 안에 담겨있는 값. 즉, 누군가의 주소. (포인터 안에 든 내용물은 다른 메모리의 주소값이죠)

&ptr 은 ptr 그 자체의 메모리 주소. 그 ptr 이라는 이름의 집이 위치한 주소. 라고 할 수 있겠습니다. 

주소의 주소라고 하는건 헷갈리는 것 같아요! "(타인의 주소를 담는 곳)의 주소"라고 보면 좋을 것 같습니다.

sadfsa12님의 프로필 이미지
sadfsa12

작성한 질문수

질문하기