uknow226   1년 전

C++ 공부를 하다가 모르는 게 있어 글 남겨봅니다.

Node라는 class는 val값을 받아 멤버변수 val에 집어 넣는 생성자를 갖고 있습니다.

여기서 궁금한 점은 main 함수에서 13번째 줄과 14번째 줄에서 각각 100.1과 200.2를 인자로해서 insertNode함수를 호출 할 때,

13번째 문장을 실행하면

Node newNode(100.1) 이라는 문장을 통해 새로운 객체가 생성될 테고,

14번째 문장을 실행하면

Node newNode(200.2)로 새로운 객체가 또 생성될 것인데

4번째 문장에 newNode의 주소를 출력하도록 하는 문장을 넣고

13번째 문장과 14번째 문장을 실행하도록 했더니 두 개가 같은 주소가 출력 됐습니다.

각각 다른 객체여서 다른 주소값을 가리켜야 되는 것 같은데.. 왜 이런 거죠,,?

또 16번째 문장부터는 다른 질문인데

'&'는 변수의 주소값을 반환하는 것으로 알고있습니다.

포인터 변수 b를 선언하고 

18번째 문장에서 b의 주솟값을 출력하고 &b도 출력해봤더니 다른 b와 &b가 다른 주소를 가리키고 있는데

왜 이런건지 잘 모르겠습니다..

답변 감사하겠습니다!

좋은 하루 되세요!

yijw0930   1년 전

1. 객체 newNode는 스택 메모리에 존재합니다. 따라서 함수 반환시 destruct되고 다음 호출시 정확히 같은 자리에 새로운 newNode가 생성될 수 있습니다.

2. b도 하나의 변수고 자신만의 주소를 갖고 있습니다. 다만 a의 주소를 일시적으로 저장하고 있을 뿐입니다.

댓글을 작성하려면 로그인해야 합니다.