• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

(person 구조체의 주소)와 (person구조체의 주소를 넣어준 포인터를 다시 ref2에 넣었을때 주소)하고 같은게 이해가 가질 않습니다.

23.04.26 14:46 작성 조회수 206

1

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

처음 Person 구조체를 선언하면 구조체가 담길 주소가 할당되고 (편의상 a라고 하겠습니다.)

구조체의 주소를 담을 *ptr을 선언하면 포인터 그자체의 주소도 새로 생긴다고 배웠는데 (포인터의 주소는 b) 처음 구조체의 주소를 넣은 포인터라해도 그포인터의 주솟값을 다시 ref2에 넣어준다면 a라는 주소가 아닌 b가 나와야하는거 아닌가요? 어떻게 ref2에도 a라는 주소가 들어가있는건지 궁금합니다.

답변 1

답변을 작성해보세요.

1

Soobak님의 프로필

Soobak

2023.04.26

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

ref2 가 포인터 ptr 이 아닌, ptr 이 가리키고 있는 객체, 즉, person 을 참조하도록 하였기 때문입니다.
강의에서의 코드 라인 별로 설명을 드리면 다음과 같습니다.

int main()
{
  Person person; // person 객체 생성

  Person &ref = person; // person 객체에 대한 참조 ref 생성

  Person *ptr = &person; // person 객체의 주소를 가리키는 포인터 ptr 생성

  Person &ref2 = *ptr; // ptr이 가리키는 객체, 즉, 'person' 에 대한 참조 생성

  return 0;
}

따라서 결국, ref2person 객체에 대한 참조이므로, ref2person 의 주소가 동일합니다.