-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
개념이 헷갈려서 질문드립니다 (6.7a 널포인터)
23.09.19 16:49 작성 조회수 146
1
포인터 자체가 가지고 있는 주소와
포인터가 가리키는 변수의 주소랑
다른 개념이지 않나요?
예를 들어
double d=123.4;
double *ptr=&d;
이면
&ptr은 포인터 자체가 가지는 주소이고
&(*ptr)은 포인터가 가리키는 변수의 주소인데
이 값이 다르지 않나요?
이 말이 맞다면
포인터 변수는 포인터 자체의 주소와 포인터가 가리키는 변수의 주소 둘 다 가지고 있는 건가요?
너무 헷갈려서 질문드립니다 ..
답변을 작성해보세요.
3
Soobak
2023.09.19
안녕하세요, 답변 도우미 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
와 동일한 주소 값을 가집니다.
답변 1