강의

멘토링

로드맵

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

junwoo612님의 프로필 이미지
junwoo612

작성한 질문수

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

6.7a 널 포인터 Null Pointer

개념이 헷갈려서 질문드립니다 (6.7a 널포인터)

작성

·

235

1

포인터 자체가 가지고 있는 주소와

포인터가 가리키는 변수의 주소랑

다른 개념이지 않나요?

 

예를 들어

double d=123.4;

double *ptr=&d;

이면

&ptr은 포인터 자체가 가지는 주소이고

&(*ptr)은 포인터가 가리키는 변수의 주소인데

이 값이 다르지 않나요?

 

이 말이 맞다면

포인터 변수는 포인터 자체의 주소와 포인터가 가리키는 변수의 주소 둘 다 가지고 있는 건가요?

너무 헷갈려서 질문드립니다 ..

 

답변 1

3

안녕하세요, 답변 도우미 Soobak 입니다.

네, 맞습니다.

double d = 123.4;
double *ptr = &d;

해당 코드에서, &ptr 은 포인터 ptr 의 메모리 주소입니다.
ptr 또는 &(*ptr)d 의 메모리 주소입니다.
이 두 주소는 다릅니다.

  • 포인터 자체가 가지는 주소 (&ptr)
    : 포인터 변수 ptr 이 메모리에 저장된 위치(주소)입니다. 모든 변수는 메모리의 어딘가에 저장되어 있으며, 그 위치는 주소로 표현됩니다. 따라서 포인터 변수도 역시 메모리의 어딘가에 저장되어 있습니다. &ptr 은 이 포인터 변수가 저장된 메모리의 주소를 나타냅니다.

  • 포인터가 가리키는 변수의 주소 (ptr 또는 &d)
    : ptr 에 저장된 값은 d 의 주소입니다. 따라서, ptr 또는 &d 는 동일한 주소 값을 가집니다.
    말씀하신 &(*ptr)ptr 이 가리키는 변수의 주소를 나타내는 또 다른 방식이지만, 결과적으로 &d 와 동일한 주소 값을 가집니다.

junwoo612님의 프로필 이미지
junwoo612
질문자

답변 감사합니다!!!

junwoo612님의 프로필 이미지
junwoo612

작성한 질문수

질문하기