์๋
ํ์ธ์ ์ค๋์ C์ธ์ด swapํจ์๋ฅผ ์ด์ฉํด์, ๋ ๊ฐ์ ๋ฐ๊ฟ๋ณผ๊ฒ๋๋ค!
https://lucete1230-cyberpolice.tistory.com/search/call%20by
์์ ์ Call by value ์ Call by reference์ ๋ํ ์ค๋ช
์ ํฌ์คํ
ํ์ ์ด ์์ผ๋ ์ฐธ๊ณ ํด์ฃผ์ธ์.
1. swap ํจ์ ์ด์ฉํ๊ธฐ
2. temp ๋ณ์๋ก ๊ฐ ๋ฐ๊ฟ์ฃผ๊ธฐ
3. ๋ฉ์ธํจ์์์ ์ถ๋ ฅํ๊ธฐ
swapํจ์๋ voidํ์
๋๋ค.
ํจ์๋ ๋ฆฌํด๊ฐ์ด ํ ๊ฐ์ด๊ฑฐ๋ 0๊ฐ์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ ๊ฐ์ ๋ฆฌํดํด์ค ์๋ ์์ผ๋ฏ๋ก intํ์ด ์๋ voidํ์ ์ฌ์ฉํ์ฌ
์ฃผ์ ๊ฐ์ ์ฐธ์กฐํ์ฌ ๋ฐ๊ฟ์ค ๊ฑฐ์์! (ํฌ์ธํฐ๋ฅผ ์ด์ฉ)
๋ฐ์ ์ฌ์ง์ผ๋ก ์ค๋ช
ํด๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ฝ๋๋ณด๊ธฐ
#include void swap(int* p,int* p1){ int temp; temp =*p; *p=*p1; *p1= temp; } int main(void){ int a =5; int b =10; printf("๋ณ๊ฒฝ ์ ์ a์ ๊ฐ :%d, b์ ๊ฐ : %d \n",a,b); swap(&a,&b); printf("๋ณ๊ฒฝ ํ์ a์ ๊ฐ :%d, b์ ๊ฐ : %d \n",a,b); return 0; } |
์ฝ๋ ์ค๋ช
๋ฉ์ธ ํจ์๋ฅผ ๋ณด๋ฉด int a=5, int b = 10์ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค.
๊ทธ๋ฆผ์ผ๋ก ์ด์ด์ ์ค๋ช
ํ์๋ฉด
์ด๋ ๊ฒ ์ฃผ์๋ฅผ ๋ฐ๋ผ๊ฐ์ ๊ฐ์ ์ฐธ์กฐํ๋ค.
๊ฐ์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์์จ๋ค๋ฉด, swapํจ์์์ ๋ณ๊ฒฝํด ์ฃผ์ด๋,
๋ค๋ฅธ ํจ์์ธ main์๊ฒ๋ ์๋ฌด ์ํฅ์ด ์๊ธฐ๋๋ฌธ์
์ฃผ์๊ฐ์ ์ด์ฉํ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๋ค.
์ ์ฒด์ ์ธ ํ๋ฆ์ ์ด๋ ๋ค.
swapํจ์ ์์์ temp๋ณ์๋ฅผ ์ ์ธํด์ค๋ค.
๊ฐ์ ์ด๋ํ๊ธฐ ์ํ ์ค๊ฐ์ญํ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด๋๋ค.
๊ฐ์ด ๋ฐ๋๋ ๊ณผ์ ์
1. *p ์ฆ a์ ์ฃผ์๋ฅผ ์ฐธ์กฐํ ๊ฐ์ temp์ ๋ฃ์ด์ค. (temp์๋ *p๊ฐ์ด ๋ค์ด๊ฐ์๊ณ , *p๋ ๋น์ด์์)
2. *p1 ์ฆ b์ ์ฃผ์๋ฅผ ์ฐธ์กฐํ ๊ฐ์ *p์ ๋ฃ์ด์ค. (*p์๋ *p1์ด ๋ค์ด๊ฐ์๊ณ , *p1์ ๊ฐ x)
3. temp ( ํ์ฌ *p๊ฐ์ ๊ฐ์ง๊ณ ์์)๋ฅผ *p1์ ๋ฃ์ด์ค.
--> ๊ฒฐ๊ณผ์ ์ผ๋ก *p์ *p1์ ์๋ฆฌ๊ฐ ๋ฐ๋์๋ค.
๊ฒฐ๊ณผ ๋ณด๊ธฐ
๊ฐ์ด ์ ๋๋ก ์ ๋ฐ๋์๋ค์ ใ
ใ
๋ค์์๊ฐ์ ๋ฐฐ์ดํฌ์ธํฐ๋ฅผ ๊ณต๋ถํด๋ด
์๋ค~
๊ทธ๋ผ ๋ชจ๋ ์๋ฝ ๐๐