C++에서 swap() 함수는 두 변수에 저장된 값을 서로 맞바꾸는(교환하는) 데 사용되는 함수입니다. 이 함수를 활용하면 별도의 임시 변수(third variable)를 직접 선언하지 않고도 두 값을 간편하게 교환할 수 있습니다.
swap() 함수의 기본 문법
void swap(int variable_name1, int variable_name2);
값 전달 방식(Call by Value)의 특징
swap() 함수에 변수를 값으로 전달하면, 함수 내부에서는 두 값이 교환되지만 실제 원본 변수의 값은 그대로 유지된다는 점에 유의해야 합니다. 즉, 함수가 종료된 후에는 원래 값이 그대로 남아 있습니다.
다음은 C++에서 swap() 함수를 사용한 예제입니다.
예제 1: 표준 swap() 함수 사용
#include <bits/stdc++.h>
using namespace std;
int main() {
int x = 35, y = 75;
printf("Value of x :%d",x);
printf("\nValue of y :%d",y);
swap(x, y);
printf("\nAfter swapping, the values are: x = %d, y = %d", x, y);
return 0;
}실행 결과
Value of x :35 Value of y :75 After swapping, the values are: x = 75, y = 35
참조 전달 방식(Call by Reference)으로 값 교환하기
실제 변수의 값까지 영구적으로 교환하고 싶다면, 변수를 참조(&)로 전달하는 것이 좋습니다. 참조로 전달하면 함수 내부에서 수행한 교환이 호출한 곳의 실제 변수에도 그대로 반영됩니다.
다음은 참조를 이용해 두 값을 교환하는 사용자 정의 함수 예제입니다.
예제 2: 참조를 이용한 SwapValue() 함수
#include <stdio.h>
void SwapValue(int &a, int &b) {
int t = a;
a = b;
b = t;
}
int main() {
int a, b;
printf("Enter value of a : ");
scanf("%d", &a);
printf("\nEnter value of b : ");
scanf("%d", &b);
SwapValue(a, b);
printf("\nAfter swapping, the values are: a = %d, b = %d", a, b);
return 0;
}실행 결과
Enter value of a : 8 Enter value of b : 28 After swapping, the values are: a = 28, b = 8
정리
C++의 swap() 함수는 두 변수의 값을 손쉽게 교환할 수 있는 유용한 도구입니다. 다만 값 전달 방식을 사용하면 원본 변수는 변경되지 않고, 참조 전달 방식을 사용해야만 실제 변수의 값이 교환된다는 점을 기억하세요. 상황에 맞게 적절한 전달 방식을 선택하면 더 안전하고 효율적인 코드를 작성할 수 있습니다.