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

정준혁님의 프로필 이미지
정준혁

작성한 질문수

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

로또 번호 생성기

정렬 함수 만들기 관련 질문

작성

·

299

0

  • 정렬 함수 만드는 과정에서 Swap부분을 이용하는 대신 저는 참조를 사용하여 변형하고 싶었습니다. 보이는 사진처럼 진행하였으나 올바른 값이 나오지 않는데 왜 그런지 모르겠습니다.

답변 1

0

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

참조에 대한 이해가 잘못되었습니다.
참조는 포인터처럼 주소값을 들고 있는 것이라 생각하시면 됩니다.

best와 i 인덱스 안에 있는 값을 뒤바꾸려고 시도하는 와중,
그 중간 과정으로 temp에다 임시적으로 numbers[best]의 값을 저장하는 것인데요.


int& temp = numbers[best]을 하면 숫자가 아닌 주소값을 저장하게 됩니다.
즉 100을 저장하는게 아니라 numbers[best]라는 곳의 주소를 저장하고,
추후 numbers[i] = temp; 를 하게 되면
보관해둔 주소 안에 있는 값을 numbers[i]에다 넣게 되겠죠.
그러나 중간에 numbers[best] = numbers[i]를 통해 이미 100이라는 값이 200으로 덮어써진 상태이므로
100이라는 값의 존재는 모두가 잊은채로 증발된 상황입니다.

그림을 그려가면서 다시 이해를 해보시고
포인터/참조를 이해하지 못하면 C++은 영영 작업이 불가능하니 더 고민해보시기 바랍니다.

정준혁님의 프로필 이미지
정준혁

작성한 질문수

질문하기