작성
·
308
답변 1
0
참조에 대한 이해가 잘못되었습니다.
참조는 포인터처럼 주소값을 들고 있는 것이라 생각하시면 됩니다.
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++은 영영 작업이 불가능하니 더 고민해보시기 바랍니다.