๋ชจ๋ ์ค์ต ์ฝ๋๋ ๊น์ฑ์ฝ ๋ํ๋์
"Do it ! C์ธ์ด ์
๋ฌธ" ์ฑ
์ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์ค์ตํ๊ณ ๋ด์ฉ์ ์์ฝํ ๊ฒ์
๋๋ค.
โป ์์
์ฉ๋๊ฐ ์๋๋ฉฐ, tips๋ฅผ ํตํด ๋ฐฐ์ด ๋ด์ฉ์ ๋ณต์ตํ๊ณ ์ ์ค์ค๋ก ๊ณต๋ถํ๋ ๋ชฉ์ ์ผ๋ก ์ฌ๋ฆฌ๋ ๊ฒ์ด๋
๋ถ๋ฒ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๊ธ์งํฉ๋๋ค.
1. ์ง์ ์ฃผ์ ์ง์ ๋ฐฉ์์ผ๋ก ๋ณ์ ๊ฐ ๊ตํํ๊ธฐ.
๊ฐ์ ๊ตํํ๋ ์ฝ๋๋ฅผ main ํจ์ ์์ ๋ง๋ค์ด ๋์ผ๋ฉด ์ฌ๋ฌ ๋ฒ ์ฌ์ฌ์ฉํ๋ ๋ฐ,
๋ถํธํ ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ด Swapํจ์๋ฅผ ๋ฐ๋ก ๋ถ๋ฆฌํ์ฌ ์์ ์ฝ๋๋ฅผ ๋ง๋ค์ด ๋ณด์.
#include<stdio.h>
// temp ๋ณ์๋ฅผ ์ด์ฉํ์ฌ a์ b์ ๊ฐ์ ์๋ก ๋ฐ๊พธ๋ ํจ์
void Swap(int a, int b)
{
int temp = a; //a = 96, b = 5
a = b; //a = 5, b = 5
b = temp; // a = 5; b = 96;
}
void main()
{
int start = 96, end = 5;
printf("before : start = %d, end = %d \n", start, end);
if (start > end) {
Swap(start, end); // start์ end์ ๊ฐ์ ๋ฐ๊พธ๊ธฐ ์ํด์ Swap ํจ์๋ฅผ ํธ์ถ ํจ.
}
printf("after : start =%d, end =%d \n", start, end);
return 0;
}
๊ฒฐ๊ณผ
๊ฒฐ๊ณผ๋ ๊ฐ์ด ๋ฐ๋์ง ์๋๋ค.
๋ถ๋ช
start ๊ฐ์ด end ๊ฐ ๋ณด๋ค ํฌ๊ธฐ ๋๋ฌธ์ ์กฐ๊ฑด๋ฌธ์ ๋ง์กฑํ์ฌ Swapํจ์๊ฐ ํธ์ถ๋์์ ๊ฒ์ด๊ณ
start, end ๋ณ์ ๊ฐ์ ๋งค๊ฐ๋ณ์ a,b๋ก ์ ๋ฌ ๋ฐ์์ a,b๊ฐ ์๋ก ๊ตํ๊น์ง ํ์ ๊ฒ์ด๋ค.
ํ์ง๋ง main ํจ์์ start, end์ ์๊ด ์์ด ๋ณ๊ฒฝ๋ ๋ณ์๊ฐ a,b,๋ผ๋ ๊ฒ์ด ์ด ์์ ์ ๋ฌธ์ ์ ์ด๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ์ (bp์ ํ๋ฆ๋ ์์์ผ ํจ)
๋ค๋ฅธ ํจ์์ ์ง์ญ ๋ณ์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ ํฌ์ธํฐ ๋ฌธ๋ฒ์ ์ฌ์ฉํด์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ค.
๊ทธ๋ ๋ค๋ฉด ํฌ์ธํฐ๋ฅผ ์ด์ฉํด์ ๋ ๋ณ์ ๊ฐ์ ๋ฐ๊พธ๋ ์ฝ๋๋ ์ด๋ป๊ฒ ๋ ๊น?
ํฌ์ธํฐ ๋ฌธ๋ฒ์ ์ด์ฉํด์ ๊ฐ ๋์ ๊ฐ ๋ณ์์ '์ฃผ์'๋ฅผ ๋๊ฒจ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
main ํจ์์ start์ end ๋ณ์ ์ฃผ์๋ฅผ Swapํจ์๋ก ์ ๋ฌํ๋ ค๋ฉด Swapํจ์์ ๋งค๊ฐ๋ณ์์๋ ํฌ์ธํฐ ๋ณ์๊ฐ ์์ผํ๋ค.
๋ฐ๋ผ์ Swapํจ์๊ฐ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ค.
2. ๊ฐ์ ์ฃผ์ ์ง์ ๋ฐฉ์(ํฌ์ธํฐ)์ผ๋ก ๋ณ์ ๊ฐ ๊ตํํ๊ธฐ.
#include<stdio.h>
//temp๋ฅผ ์ด์ฉํ์ฌ a์ b์ ๊ฐ์ ์๋ก ๋ฐ๊พธ๊ธฐ
void Swap(int* pa, int* pb)
{
int temp = *pa; // start(*pa) = 96, end(*pb)=5;
*pa = *pb; //start(*pa) = 5, end(*pb)=5;
*pb = temp; //start(*pa)= 5, end(*pb) = 96;
}
void main() {
int start = 96, end = 5;
printf("before : start = %d, end = %d\n", start, end);
if (start > end) {
Swap(&start, &end);//๊ฐ์ด ์๋ ์ฃผ์๋ฅผ ๋ณด๋ด์ค๋ค.
}
printf("after : start = %d, end = %d\n", start, end);
}
๊ฒฐ๊ณผ
start์ end๊ฐ์ด ์ ์์ ์ผ๋ก ๋ณ๊ฒฝ๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
Swap ํจ์์์ pa, pbํฌ์ธํฐ๋ฅผ *pa, *pb์ ๊ฐ์ด ์ฌ์ฉํ๋ฉด pa,pb ํฌ์ธํฐ๊ฐ ๊ฐ๋ฅดํค๋ ๋์ ๋ฉ๋ชจ๋ฆฌ์ธ
start, end์ ๊ฐ์ด ๋ณ๊ฒฝ ๊ฐ๋ฅํด์ง๊ธฐ ๋๋ฌธ์ Swapํจ์ ์ข
๋ฃ ํ main์ผ๋ก ๋ณต๊ทํ์ ๋, ์ฃผ์์ ํด๋นํ๋
๊ฐ์ด ๋ฐ๋๋ ๊ฒ์ด๋ค.
๋ ์์ธํ ๋ด์ฉ๊ณผ ๋ฉ๋ชจ๋ฆฌ ๋ณํ ๊ณผ์ ์ ํ์ธ ํ๊ณ ์ถ๋ค๋ฉด, ๊น์ฑ์ฝ ์ค์ "Do it C์ธ์ด ์
๋ฌธ" ์ฑ
์ ์ฐธ๊ณ ํด์ฃผ์ธ์.