작성
·
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
와 동일한 주소 값을 가집니다.
답변 감사합니다!!!