• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

참조 질문이 있습니다

21.01.12 23:10 작성 조회수 117

0

 struct Something

{

int v1;

float v2;

};

struct Other

{

Something st;

};

int main()

{

Other ot;

int &v1=ot.st.v1;

v1=1.0;

return 0

}

===========================

이코딩에서 일부분인 

int &v1=ot.st.v1;에서 왼쪽 v1 과 오른쪽 v1 은 같은건가요 아니면 왼쪽 v1은 그냥 별명으로 둔건가요?

답변 1

답변을 작성해보세요.

2

안소님의 프로필

안소

2021.01.13

왼쪽 v1은 오른쪽 v1의 별명이 됩니다. 

즉 실존하는 ot.st.v1 메모리를 v1 이라는 이름으로도 접근할 수 있게 된겁니다. 

하나의 동일한 메모리 공간에 이름이 2개가 된 것이나 마찬가지에요. v1와 ot.st.v1

v1 = 1 해주고 ot.st.v1 을 출력하니 ot.st.v1도 1 이 된 것을 확인할 수 있습니다.

그리고 v1과 ot.st.v1의 주소가 같은 것도 확인하실 수가 있습니다. 동일한 메모리라는 얘기죠!