개념/c++
C++ 함수 - 매개변수
웅드
2023. 11. 17. 20:22
참조(reference)
- 미리 정의된 변수의 실제 이름 대신 사용할 수 있는 대용 이름을 말한다
- 함수의 매개변수에 사용된다.
c++의 구조체는 원본이 아니라 그 복사본을 만들어서 복사본에 대해 작업한다.
참조를 매개변수로 사용하게 된다면 그 함수는 복사본이 아니라 원본의 데이터를 가지고 작업을 하게 된다.
만약 구조체의 볼륨이 크다면 함수에서 포인터 대신에 참조를 사용하는 것이 실행속도 측면에 유리하게 코딩하는 방법이다.
int a;
int& b = a; //a에 대한 참조 변수
&는 주소 연산자인 동시에 참조 연산자로서의 기능을 수행하고 있다.
이러한 참조 변수의 방식으로 매개 변수를 전달하는 것을 참조로 전달한다 라고 한다.
전달하는 방식에는 총 3가지가 존재한다.
- 값으로 전달하는 방식
- 포인터로 전달해주는 방식
- 참조로 전달해주는 방식
void swapA(int& a, int& b);
void swapB(int* a, int* b);
void swapC(int a, int b);
int main(){
int alpha = 100;
int beta = 200;
cout << "alpha = " << alpha << ", beta = " << beta << endl; // 100 , 200 출력
swapA(alpha, beta);
cout << "alpha = " << alpha << ", beta = " << beta << endl; // 200, 100 출력
swapB(&alpha, &beta);
cout << "alpha = " << alpha << ", beta = " << beta << endl; // 100, 200 출력
swapA(alpha, beta);
cout << "alpha = " << alpha << ", beta = " << beta << endl; // 100, 200 출력
}
//참조로 전달하는 방식
void swapA(int& a, int& b){
int temp;
temp = a;
a = b;
b = temp;
}
//포인터로 전달하는 방식
void swapB(int* a, int* b){
int temp;
temp = *a;
*a = *b;
*b = temp;
}
//값으로 전달하는 방식
void swapC(int a, int b){
int temp;
temp = a;
a = b;
b = temp;
}
기본적으로 함수에게 값으로 내용을 전달할 때는 함수는 그 값에 대한 복사본을 만들어서 작업을 하기 때문에
작업 이후의 내용을 따로 return해준 다음 다시 메인함수에서 그것을 저장해주는 과정이 없는 한 원본에 대한 내용에 침해되지 않는다.
복사본이 아닌 원본에 대해 작업을 하기 위해서는 참조를 이용해서 값을 전달하거나, 포인터를 이용해서 값을 전달하는 방법으로
그 원본에 대한 데이터에 직접적으로 접근할 수 있다.
반응형