inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

TextRPG #3

CreateMonster함수 질문

197

킴주니

작성한 질문수 24

0

1.void CreatMonsters(Statinfo* monsters, int count)로 선언을 했는데 제가 여기서 monsters부분을 monsters[]로하니 오류가 나더군요 오류가 나는이유가 궁금합니다 Statinfo타입의 배열로 만들었는데 그러면 배열로 선언해줘야 하는거 아닌지 궁금합니다

2. 1번과 연관된 질문입니다 void CreatMonsters(Statinfo* monsters, int count) 내부에서 랜덤밸류를 설정해서 몬스터의 i번쨰의 데이터를 집어넣는데 함수형식을 보면 Statinfo*라고해서 포인터로 선언했는데 내부 코드를보면 monster[i].hp를 사용하는데 배열관련된 부분은 .으로 접근해서 사용하는건 알겠는데 처음 함수를 선언할때 Statinfo*형식인데 ->로 접근해서 데이터를 변경하는게 맞는거아닌가요? 너무 헷갈립니다

 

3.EnterBattle(playerinfo,&monsters[index])을 실행할때 이런 모습인데 여기서 EnterBattle은

bool EnterBattle(Statinfo* playerinfo, Statinfo* monsterinfo);

이런 모습인데 실행시킬때 &playerinfo가 아닌 그냥 playerinfo인 이유가 Entergame함수에서 인자로 받은 playerinfo가 애초에 주소값이기때문에 그냥 playerinfo로 넣는건가요? 그리고 또 monsters배열에는 &가 붙은이유는 &가없으면 주소값이아닌 그냥 값의 형태기때문에 &를 붙여 주소로 변경해주는건가요??



 

c++

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

킴주니님의 질문과 관련해서 비슷한 문제를 다루는 내용이 있어 이를 안내드리겠습니다.

  1. 배열과 포인터 관련 질문: StatInfo* monstersmonsters[]의 차이에 대해서 혼란이 있으신 것 같습니다. C++에서는 배열 이름이 포인터로 취급되기 때문에 StatInfo* monstersStatInfo monsters[]와 유사하게 작용합니다. 하지만 함수의 매개변수로 배열을 명시할 때는 크기를 지정하지 않는 [] 형식으로 사용하는 것이 일반적이며, 이는 포인터로 배열의 시작 주소만 전달한다는 것을 의미합니다. 이와 관련된 내용을 자세히 설명한 기존 답변을 추천드립니다:

  2. 포인터와 배열 인덱싱 사용 관련 질문: StatInfo* monsters가 포인터임에도 왜 .hp 방식으로 접근하는지에 대한 질문입니다. C++에서는 포인터를 배열처럼 사용할 수 있으며, monsters[i]는 배열의 i번째 요소에 접근하는 것을 의미합니다. 포인터에 대한 배열 인덱싱(monsters[i])은 내부적으로 포인터 연산을 하여 해당 위치의 주소를 찾고, 그 결과를 . 연산자로 접근할 수 있습니다. 즉, monsters[i].hp(*(monsters + i)).hp와 동일한 의미입니다. 이에 대한 설명을 담고 있는 기존 답변을 참조하세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

소스코드와 관련하여 질문드립니다

0

70

1

map 컨테이너의 emplace 함수에 대해

0

112

2

시작이 안되네요...!

0

96

2

EAX 명령어 실행 시 RAX의 상위 32비트가 초기화 되는 이유

0

125

1

리틀 엔디안 장점 질문합니다.

0

131

1

메모리 창에 주소를 넣었는데 영어 꺠짐

0

124

1

타입변환#2 build시 knight 인접 stack이 침범당했다는 error가 발생합니다.

0

94

2

map #1 8분 58초 맵은 레드블랙트리로 이루어진 것 같습니다.

1

138

2

hello world 부터 오류 ㅠㅜ

0

188

1

지역변수가 스택? 레지스터

0

127

2

마지막 문제 질문드립니다.

0

163

2

메모리창이 비활성화됩니다.

0

98

1

이중포인터 강좌 부분 질문있습니다.

0

145

1

2를 더하는 이유

0

133

1

메모리 주소 창 엔디안 질문 드립니다. 인프런 봇 답변도 괜찮습니다

1

110

1

해당 코드는 왜 오류가 날까요?

0

154

1

마지막 문제 질문 있습니다.

0

118

1

강의 마지막부분에 질문이 있습니다.

0

190

2

Field초기화

0

140

1

virtual과 override 차이

0

314

2

3:30 참조자 리턴

0

167

1

map 찾기

0

158

1

프로그램 질문드려요

0

259

1

캐스팅 질문

0

138

1