W 개발 일지

C 포인터를 이용한 swap 함수 만들기 본문

C

C 포인터를 이용한 swap 함수 만들기

waVwe 2021. 3. 3. 17:27
반응형

 

포인터에 대한 간단한 요약으로는 다음 사진과 같다.

 

일반 변수 num과 포인터 변수 numPtr에 대한 설명

 

그림과 같이 포인터는 변수의 메모리 주소'만' 가리키는 화살표와 같다. 이를 이용해서 swap 함수를 만들어보자.

두 수를 a, b에 입력받고 출력한 뒤, 이 두 수를 서로 바꿔주는 swap 함수를 만들어 바뀐 수 또한 출력할 예정이다.

완성 코드는 다음과 같다.

#include <stdio.h>
 
void swap(int* a, int* b);
 
int main() {
 
    int a, b = 0;
    scanf("%d %d"&a, &b);
 
    printf("스왑하기 전 : %d %d\n", a, b);
 
    swap(&a, &b);
 
    printf("스왑한 후 : %d %d\n", a, b);
 
    return 0;
}
 
void swap(int* a, int* b) {
 
    int tmp =*a;
    *= *b;
    *= tmp;
}
cs

 

a와 b는 지역변수이므로 main을 벗어나면 값이 소실된다. 그러므로 a와 b의 주소 값을 함수에 넘겨줘야한다. swap(&a, &b);

주소값을 저장할 수 있는 변수는 포인터 변수이므로 파라미터에는 int* a, int* b가 들어가게 된다.

 

void swap(int* a, int* b) {
    int tmp =*a;
    *= *b;
    *= tmp;
}
cs

 

두 수를 바꾸기 위해 임시 변수인 tmp를 생성하고 역참조를 이용해 a와 b의 값을 가져와 바꿔주면 된다.

 

반응형