1619, 1/81 회원가입  로그인  
   lackhole
   Penguins.png (18.4 KB), Download : 108     [오른쪽 버튼 눌러 다운 받기]
   [펌]C Language (swap)

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=8159 [복사]



c언어 swap예제

a 에다 1을 입력하고 b에다 2를 입력하고 a와b의 값을 바꾸는 예제를 만들라고 한다면 c언어를 초반으로 접하시는 분들은 아래와 같이 작성할수도 있다

#include <Stdio.h>

int main(void)
{
        int a , b;
        
        printf("a :");
        scanf("%d",&a); //1로 입력한경우
        
        printf("b :");
        scanf("%d",&b); //2로 입력한경우
        
        b = a;  
        a = b;  
        
        printf("a : %d\nb : %d\n",a , b);
        
        return 0;
}
c언어를 초반으로 접하신 분은 이렇게 작성할수도 있습니다.

하지만 이렇게 작성하면
b=a;
a=b;
부분에서 값손실이 일어납니다.
일단 a의 값을 b에다 넣었습니다.c언어는 위에서 아래로 읽기 때문에
a=b;에서 a값에다 b를 넣지만  위에서 b의 값이 a로 바뀐 상태로 되기때문에 둘다 a의 값과 동일해진다는 오류가 있습니다.
그래서 swap은 아래와 같은 코드

#include <Stdio.h>

int main(void)
{
        int a , b;
        int tmp = 0; //temporay
        
        printf("a :");
        scanf("%d",&a); //1로 입력한경우
        
        printf("b :");
        scanf("%d",&b); //2로 입력한 경우
        
        tmp = b;  //b값 미리 저장
        b = a;  //b값이 a로 바뀜  //swap
        a = tmp;  //a의 값은 tmp의 저장된 b의 값
        
        printf("a : %d\nb : %d\n",a , b);
        
        return 0;
}

이렇게 b의 값을 미리 tmp라는 변수의 저장을해주고
a = tmp;로 저장된 b의 값을 가져옵니다'


  Hit : 10115     Date : 2015/10/17 07:38



    
wsj7178 이걸 이용해서 함수도 만들수 있죠
void swap(int *x, int *y)
{
int tmp;
tmp = *x;
*x = *y;
*y = tmp;
}
2015/11/29