• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

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

23.09.19 16:49 작성 조회수 141

1

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

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

다른 개념이지 않나요?

 

예를 들어

double d=123.4;

double *ptr=&d;

이면

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

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

이 값이 다르지 않나요?

 

이 말이 맞다면

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

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

 

답변 1

답변을 작성해보세요.

3

Soobak님의 프로필

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 와 동일한 주소 값을 가집니다.

junwoo612님의 프로필

junwoo612

질문자

2023.09.20

답변 감사합니다!!!