์ƒˆ์†Œ์‹

Languages/C

[C์–ธ์–ด] swapํ•จ์ˆ˜(ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ์ด์šฉํ•˜๊ธฐ)

  • -
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š” ์˜ค๋Š˜์€ 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์˜ ์ž๋ฆฌ๊ฐ€ ๋ฐ”๋€Œ์—ˆ๋‹ค.

 

๊ฒฐ๊ณผ ๋ณด๊ธฐ

 

๊ฐ’์ด ์ œ๋Œ€๋กœ ์ž˜ ๋ฐ”๋€Œ์—ˆ๋„ค์š” ใ…Žใ…Ž 

๋‹ค์Œ์‹œ๊ฐ„์—” ๋ฐฐ์—ดํฌ์ธํ„ฐ๋ฅผ ๊ณต๋ถ€ํ•ด๋ด…์‹œ๋‹ค~

๊ทธ๋Ÿผ ๋ชจ๋‘ ์•ˆ๋‡ฝ ๐Ÿ˜๐Ÿ˜

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.