์ฐธ์กฐ๋ณ์์ ์ผ๋ฐ๋ณ์์ ์ฌ์ฉ์ ์ฐจ์ด์ ์ ์์๋ค๋ฉด, main ํจ์๊ฐ ๋์ํ๋ ๋์ค ๋ค๋ฅธ ํจ์๋ฅผ ํธ์ถํ ๋, ๊ทธ ํจ์์ ์ธ์ ์ญ์ ๋ ์ข ๋ฅ๊ฐ ์์์ ์ ์ ์๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ์ผ๋ฐ๋ณ์์, ์ฐธ์กฐ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๋ ๋ณ์์ ๊ฐ์ ๋ฐ๊พธ๋ ํจ์ย swapย ์ main ํจ์์์ ํธ์ถํ๋ ์ํฉ์ ๊ฐ์ ํ๊ณ ๋น๊ตํด๋ณด์.
Swap_callbyValue
์ ๊ฐ์ ๊ฐ์ด ์ถ๋ ฅ๋ ๊น? main
ย ํจ์์์ย swap
ย ํจ์๋ฅผ ํธ์ถํ์ ๋, x
ย ,ย y
ย ๊ฐ์ดย swap
ย ํจ์์ ๋ค์ด๊ฐ๊ณ , ์ด ๊ฐ์ ๊ฐ๊ฐย a
ย ,ย b
ย ์ย ๋ณต์ฌย ๋๋ค.
๋ฐ๋ผ์ย swap
ย ํจ์ ์์์๋ย ๋ณต์ฌ๋ a, bย ์์ ๋ค์ด๊ฐ ๊ฐ์ด ์๋ก ๋ฐ๋๊ฒ ๋๊ณ , swap
ย ํจ์๊ฐ ์ข
๋ฃ๋ ํ์ ์ด ๊ฐ์ย ์ฌ๋ผ์ง๋ค.
๊ฒฐ๊ตญ ๋ด๊ฐ ์ํ ๊ฒฐ๊ณผ์ธย x
ย ,ย y
ย ๋ ๋ฐ๋์ง ์๋๊ฒ ๋น์ฐํ๋ค. ์ด๋ ๊ฒ ๊ฐ์ด ๋ณต์ฌ๋์ด ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒ์ย callbyvalueย ๋ผ ํ๋ค.
Swap_callbyReference
์ด๋ ๊ฒ ํ ๊ฒฝ์ฐ,ย swap
ย ํจ์๋ฅผ ํธ์ถํ ๋ค์ ์์ ๋ค์ด๊ฐ ๋,ย &a = x
ย ,ย &b = y
ย ์ด๋ฐ์์ผ๋ก ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์
a
ย ์ย b
ย ๋ย x
ย ,ย y
ย ์์ฒด๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ๋ฐ๋ผ์ ๋ด๊ฐ ์ํ๋ ๊ฒฐ๊ณผ์ธย x
ย ,ย y
ย ์ ๊ฐ์ด ๋ฐ๋๊ฒ ๋๋ค.
์ด๋ ๊ฒ ์ค์ ๊ฐ์ ๊ฐ์ง๊ณ ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒ์ย callbyreferenceย ๋ผ ํ๋ค.