3 분 소요

0. 예제

...
void SetMessage(const char* msg)
{
    msg = "Message 2";
}

int main()
{
    const char* msg = "Message 1";
    SetMessage(msg);
    cout << msg;

    return 0;
}
  • 결과
    msg의 값이 바뀌지 않는다.
    image
  • 이유
    SetMessage의 매개변수 msg의 값은 함수가 return되면 stack에서 해제되어 변경값은 사라진다.
    (msg가 가리키는 값이 Message 1 인 것은 변함없다.)

1. 다중 포인터(**)

...
void SetMessage(const char** p_msg)
{
    *p_msg = "Message 2";
}

int main()
{
    const char* msg = "Message 1";
    SetMessage(&msg);
    cout << msg;

    return 0;
}
  • 결과
    image
    const char* 를 T로 치환해서 생각해 보면 쉽게 이해 할 수 있다.


📑. 참고

카테고리:

업데이트:

댓글남기기