인프런 커뮤니티 질문&답변
개념이 헷갈려서 질문드립니다 (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와 동일한 주소 값을 가집니다.






답변 감사합니다!!!