참조와 복사의 차이
int &ref = arr[0]; // 참조
int copy = arr[0]; // 복사
참조 (Reference)
- 참조(Reference) : int &ref는 ref가 arr[0]을 참조하도록 한다. 이는 ref가 arr[n]의 다른 이름이 되도록 한다. 따라서 ref를 수정하면 arr 배열의 값도 수정된다. 이는 실제 데이터에 대한 별칭을 제공하므로 메모리를 추가로 사용하지 않으며, 성능 측면에서 이점이 있을 수 있다
복사 (Copy)
- int copy라면 arr[n]의 값을 copy에 복사하게 된다. 이렇게 되면 copy와 arr[n]은 서로 다른 메모리 공간을 차지하게 되며, copy를 수정하더라도 arr[n]에는 영향을 미치지 않는다.
예시
참조 사용
#include <iostream>
using namespace std;
int main() {
int arr[10] = {0};
int &ref = arr[0]; // arr[0]을 참조하는 ref
ref = 5; // ref를 수정하면 arr[0]도 수정됨
cout << arr[0] << endl; // 출력: 5
return 0;
}
복사 사용
#include <iostream>
using namespace std;
int main() {
int arr[10] = {0};
int copy = arr[0]; // arr[0]의 값을 복사하는 copy
copy = 5; // copy를 수정해도 arr[0]에는 영향을 미치지 않음
cout << arr[0] << endl; // 출력: 0
return 0;
}
참조 사용 이유
배열에 자주 접근하고 값을 자주 수정해야 한다면, 매번 arr[n]을 사용하기보다 참조 변수를 사용하는 것이 코드의 가독성과 성능 측면에서 유리하다.
- 가독성 향상: 코드에서 arr[n]을 반복해서 사용하면 길고 복잡한 표현이 될 수 있다. ref라는 참조 변수를 사용하면 코드가 더 간결하고 이해하기 쉬워진다.
- 성능 향상: 참조 변수를 사용하면 중첩된 배열 접근을 반복해서 수행하는 것보다 더 효율적일 수 있다. 이는 특히 큰 데이터 구조를 다룰 때 유용하다.
'C++' 카테고리의 다른 글
[C++] 소수점 고정 출력과 cout << fixed, cout << setprecision(), cout.precision() (0) | 2024.08.13 |
---|---|
[C++] cin과 getline(), 그리고 cin.ignore() (0) | 2024.08.13 |
[C++] terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc (0) | 2024.05.21 |
[C++] endl과 '\n'의 차이 (0) | 2024.04.23 |
[C++] string 변환 (0) | 2024.04.09 |