• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

pp 질문입니다.

22.03.15 15:50 작성 조회수 185

0

이틀동안 고민했어요.

이렇게 생각하면 맞는건지 궁금해요..

pp 포인터 변수는 main 스택프레임 안의 메모리에 박혀있고.

ex) const char** pp -> 0x00000001주소에 박혀있음

pp포인터 변수는 &msg의 주소를 가짐

pp 변수의 주소를 SetMessage 의 매개변수 a에 넣음.

*a 로 a(pp)변수가 가진 주소로 텔레포트 -> &msg

&msg가 가진 주소에 "bye"의 주소를 넣음

const char** pp = &msg;

//[매개변수][RET][지역변수 (msg(hello의 주소)) ][매개변수(a((msg의 주소)))][RET][지역변수]
// 매개변수 a 는 pp(&msg)의 주소를 가짐.
//*p로 pp 가 가지고있는 &msg주소의 값을 가져옴 
// 어라? 주소가 또 있네? -> 그 주소를 바꾸는 것. (&msg가 가지고있는 값(주소)를 바꿈)
// 그래서 바뀌는 것.
SetMessage(pp);
cout << msg << endl;

 

답변 1

답변을 작성해보세요.

0



ㅁ말로 하기 보단 그림으로 보는게 더 쉬울 것 같네요.
위 그림에서 0x200를 0x300을 교체하는겁니다.

김호찌님의 프로필

김호찌

질문자

2022.03.16

말보다 그림으로 그릴걸그랬네요. 생각했던 흐름이 맞습니다. 감사합니다.