Friday, May 04, 2007
C++, 두 변수의 값 교환 함수 swap(); 참조에 의한 호출(Call by Reference)
C++의 참조 연산자인 앰퍼샌드(&) 기호를 함수 파라미터 정의 속에서 사용하면, 함수 내부에서 변경한 변수의 값이 함수 밖에서도 유지됩니다. 다만, C++가 아닌 그냥 C언어에서는 앰퍼샌드(&) 기호를 "주소 연산자"로서만 사용할 수 있습니다.
두 변수의 값을 교환하는 함수를 C로 작성하면 포인터를 사용해야 하지만, C++의 참조 연산자를 사용하면 보다 간단하게 할 수 있습니다.
소스 파일명: example.cpp
C와 C++ 모두에서 작동하는 스왑함수가 필요하면 여기에 있는 C용을 사용하면 됩니다: ▶▶ C언어] 변수 값 서로 교환, 스왑 함수; Swap Function
두 변수의 값을 교환하는 함수를 C로 작성하면 포인터를 사용해야 하지만, C++의 참조 연산자를 사용하면 보다 간단하게 할 수 있습니다.
소스 파일명: example.cpp
#include <iostream>
using namespace std;
void swap(int& a, int& b);
int main(void) {
int i = 300;
int j = 500;
cout << "i = " << i << endl;
cout << "j = " << j << endl;
// i = 300
// j = 500
// 참조(Reference)에 의한 호출
swap(i, j);
cout << "i = " << i << endl;
cout << "j = " << j << endl;
// i = 500
// j = 300
// 두 변수의 값이 교환되었습니다.
return 0;
}
// 괄호 속의 & 는 "주소 연산자"가 아니라
// "참조 연산자"이고 C++에서만 가능
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
using namespace std;
void swap(int& a, int& b);
int main(void) {
int i = 300;
int j = 500;
cout << "i = " << i << endl;
cout << "j = " << j << endl;
// i = 300
// j = 500
// 참조(Reference)에 의한 호출
swap(i, j);
cout << "i = " << i << endl;
cout << "j = " << j << endl;
// i = 500
// j = 300
// 두 변수의 값이 교환되었습니다.
return 0;
}
// 괄호 속의 & 는 "주소 연산자"가 아니라
// "참조 연산자"이고 C++에서만 가능
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
C와 C++ 모두에서 작동하는 스왑함수가 필요하면 여기에 있는 C용을 사용하면 됩니다: ▶▶ C언어] 변수 값 서로 교환, 스왑 함수; Swap Function
tag: cpp
C언어 | C/C++ (Visual C++)
<< Home