반응형

대부분 C언어를 배울때 맞닥드리는 예제로 변수의 값을 Swap하는 예제가 있다.

 

예를 들면 a, b 값이 있는데 a = 1 , b = 3 이 들어있다면 간단하게 이 두개의 값을 거로 바꾸는 예제이다.

해결방법은 아래와 같이 간단하다.

temp라는 임시변수에 잠시 값을 복사해두었다가 사용한다.

#include <stdio.h>

int main()
{
    int a = 1;
    int b = 3;

    // 두 값을 swap(바꾸기)
    printf("맨처음 값 a=%d, b=%d\n", a,b);
    
    // 값 변경을 위한 임시변수 선언
    int temp;
    temp = a;
    a = b;
    b = temp;
    
    printf("변경 후 값 a=%d, b=%d\n", a, b);

    return 0;
}

 

반응형

<포인터를 배운 후,  swap 함수 만들기>

함수와 포인터를 배운다면 이제 swap기능을 하는 함수를 만들라는 과제를 받는다.

함수 input 인자는 값을 복사하므로, swap기능을 사용하기 위해서는 주소값에 접근할 수 있는 포인터가 필요하다.

#include <stdio.h>


// 서로의 값을 바꿔주는 swap 함수
void swap(int* x, int* y)
{
    // 임시로 값을 저장할 변수 선언
    int temp;

    // temp에 x값을 저장해두기
    temp = *x;
    // x값을 y의 값으로 변경
    *x = *y;
    // x값을 저장하고 있는 temp의 값을 y에게 전달
    *y = temp;
}

int main()
{
    int a = 1;
    int b = 3;

    // 두 값을 swap(바꾸기)
    printf("맨처음 값 a=%d, b=%d\n", a,b);
    
    // 받는 input인자가 int형 포인터이므로, 주소값을 전달
    swap(&a, &b);
    
    printf("변경 후 값 a=%d, b=%d\n", a, b);

    return 0;
}

(결과) 이제 이 swap 함수를 지나면 2개의 값이 바뀌게 된다.

 

 

 

 

 

 

반응형

+ Recent posts