{
int bak;
bak = a;
a = b;
b = bak;
}
int main()
{
int a = 10;
int b = 20;
swap(a,b);
return 0;
}
이런 식으로 내가 만약 코드를 짰으면
int main()에서
a=10, b=20을 대입하고
swap이라는 함수에 a와 b를 대입,
그러면
bak에 a가 대입되는데 a=10이니깐 bak에 10이라는게 대입되어서 bak==10
그리고 a에 b=20을 대입하고
다시 b에 bak을 대입하면
a==20, b==10이 되는거 아니야?
저거 다 돌리고 마지막에 printf치면 근데 a=10 b=20이 나오는데 어떻게된건지 설명좀해주세여며여명ㅁ
swap(a,b); 이걸 주석처리 하고 해봐
잉 했는데, 근데 그렇게 하면 걍 a=10 나오고 b=20 당연히 나오는거 아닌가여ㅠㅠ
콜 바이 밸류 때문인거 같네요 [잉]
아 쏘리 위에 소스를 잘못봤네 결과가 바뀌어 나온다고 ㅡ.ㅡ?
결과가 바뀌어나오지 않는다는게 제가 궁금한점 ㅠㅠ a랑 b가 swap을 거치면 둘이 값이 바뀌어야하는거 아닌가 해서요ㅠㅠ
스왑 함수를 호출하면 메인함수에서 선언한 a,b 가 스왑함수의 a,b 에 복사된다(이 두쌍의 a,b는 이름만 같지 실제로는 다른 변수임) 따라서 스왑함수의 a,b를 바꿔도 메인함수의 a,b는 바뀌지 않음 [잉]
알듯모를듯 하네요..ㅠㅠ 아직 함수 첨공부하는거라 그런가.... 답변감사드립니다
문제를 해결하려면 1. 스왑함수 안에다 프린트에프 함수를 넣는다 2. 스왑함수의 리턴값을 메인함수의 -a,b에 대입한다 3. 스왑함수에 그냥 변수가 아닌 포인터를 대입한다 [잉]
이셋중에 하나을 하면될듯??? [잉]
main의 a, b와 swap의 a, b는 별개. 포인터를 사용하지 않는한. [핡]
함수내에 스왑후에 프린트에프함수를 넣어 출력하는방법도잇고 함수내에 포인터넣는방법도잇고 return a,b; 하거나 등등이잇음... 나도 별로못배워서 잘모르겟는데 함수가끝나면 함수내변수는 없어진다고들은듯함