인프런 커뮤니티 질문&답변

skaqk124님의 프로필 이미지
skaqk124

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

참조 기초

원인이 뭔지 잘 모르겠습니다 ㅠㅠ

작성

·

234

0

안녕하세요 열공하고있는 초보 학생입니다!

강사님의 강의를 여러번 돌려보면서 복습차 텍스트 RPG를 만드는 중에 이해를 못하는 부분이 생겨서 질문드립니다.. 이것때문에 어제 오늘 뇌가 폭발할 지경이네요!

 

struct Playerinfo
{
    int Hp;
    int Atk;
    int Def;
};

void EnterLobby();
void Stat(Playerinfo& info);
void UserInfo(Playerinfo& ttt);

int main()
{
    Playerinfo player;
    EnterLobby();
    UserInfo(player);
}

void EnterLobby()
{
    cout << "(1) 테스트입니다." << endl;
    cout << endl;

    int userinput;
    cin >> userinput;

    Playerinfo player;

    if (userinput == 1)
    {
        Stat(player);

        cout << player.Hp << " " << player.Atk << " " << player.Def << endl;

    }
}

void Stat(Playerinfo& info)
{
    info.Hp = 100;
    info.Atk = 100;
    info.Def = 100;
}

void UserInfo(Playerinfo& player)
{
    cout << player.Hp << " " << player.Atk << " " << player.Def << endl;
}

 

원래는 각종 기능을 넣어서 만들다가

중간에 막히는 부분이 생겨서 다 지우고

테스트 삼아서 위에처럼 작성해봤는데

여전히 똑같은 문제가 발생하고 있습니다.

 

이렇게 작성 후 실행을 하고 1을 누르면

 

 

처음에 참조로 수정했던 Hp, ATK, DEF 가

UserInfo 함수로 넘어와서 다시 참조로 출력해보면 괴랄한 숫자로 바뀌어버리는데

 

이게 도대체 무슨 이유일까요..

지금 C++ 공부시작한지 한달도 안되어서

겨우겨우 포인터랑 참조를 몇번씩 돌려가며

열공중인데 복습차원에서 만들다가 이부분이

막혀서 원인을 모르겠습니다 ㅜㅜ

 

제발 도와주세요~!!

답변 2

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자


엉뚱한 PlayerInfo를 채웠기 때문입니다.
EnterLobby가 호출 완료되면, 스택 영역은 유효하지 않게 바뀝니다.
그리고 애당초 main()의 PlayerInfo는 채운 적이 없습니다!

0

skaqk124님의 프로필 이미지
skaqk124
질문자

뒤에 강좌를 보고 다시 오니 이해가 완전히 되었습니다! 감사합니다!

초보적인 실수를 했네요!

빠른 답변 감사합니다!!

skaqk124님의 프로필 이미지
skaqk124

작성한 질문수

질문하기