해결된 질문
작성
·
69
답변 2
0
안녕하세요, 시험 전 날에 고생이 많으십니다.
꼭 합격하시기를 바랄게요.
우선 main 함수를 보시면 swap라는 것이 먼저 나와있습니다.
왼쪽의 예제는 메모리 주소로, 오른쪽의 예제는 변수의 값을 바꾸는 것이죠.
원리는 둘 다 같습니다.
a와 b를 받은 다음에 다른 임시 변수 temp라는 곳에 a라는 값을 잠시 넣어두고
b를 a에 넣고, temp를 다시 b에 넣습니다.
예시로 들으면 이런 겁니다.
두 사람이 앉은 자리에서 서로의 자리를 바꾸려고 합니다. 단 한 명도 그냥 일어서 있으면 안됩니다.
(의자에서 완전 일어난다는 것은 컴퓨터에서 메모리에서 나가는 것으로 보고 값이 사라지기 때문)
그래서 아예 빈 의자를 가져옵니다. 이게 temp입니다.
A라는 사람은 temp에 가서 자리에 앉습니다. (말이 앉는다는 것이지, 사실은 값을 복사합니다.)
B라는 사람이 A에 가서 앉습니다.
그리고 temp에 앉아있던 A가 B 자리로 가서 앉습니다.
결론적으로 보면 A와 B가 자리가 바뀌었죠.
위는 비유이기 때문에 실제로는 값을 복사하는 방식으로 전달되었다는 것을 잊지마시고요.
이제 swap이라는 함수가 끝났고, 값이 바뀐 상태입니다.
이제 case를 봐야하는데, case는 참/거짓으로 보는게 아니라 값 그 자체로 봅니다.
지금은 switch(a)라고 되어있으니, a의 값을 봐야겠네요.
위에서 swap으로 인해 바뀌었으니 11이 아니라 a의 값은 이제 19입니다.
19에 해당되는 것은 무엇인가요?
없습니다. case가 1아니면 11밖에 없으니까요.
그래서 default에 해당되는 곳으로 갑니다.
지금 a=19, b=11인 상태이죠. 이 상태에서 b에 3을 더하랍니다.
a=19, b=14가 됩니다.
여기서 a - b는 5가 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다. 정순탄님.
함수의 swap()
및 return
값에 대한 질문 주셔서 감사합니다. swap()
함수를 사용하실 때 이해하기 어려운 부분은, 아마 swap
함수 내의 로직이나 매개변수 전달 방식에서 발생하는 혼란일 가능성이 큽니다.
일반적으로 swap
함수에서는 두 변수의 값을 상호 교환하는 역할을 하며, 이를 위해 임시 변수를 사용하는 방법이나 포인터를 사용하는 방식이 흔합니다. 그러나, 단순히 값을 교환한다고 하더라도 return
값이 의문인 경우, 다른 연산이나 로직이 함수 내부에 숨어 있을 가능성을 고려해야 합니다.
함수의 return
결과가 5가 된다는 것은 내부적으로 처리되는 로직에서 특정 조건이나 값을 가지게 된 것 같습니다. 함수의 선언 방식이나 매개변수의 처리 방식을 살펴보시면 도움이 될 것이라고 생각됩니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.