일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 다우
- 국제유가
- dataframe
- 네마녀의날
- 화승엔터프라이즈
- 셀트리온
- englishwriting
- 영어메일
- 금리인상
- 안드로이드
- 영어메일쓰기
- ruby
- 사드보복완화
- 어학·외국어
- Intent
- 무역전쟁
- 트럼프
- 주식시황
- 토익이메일
- 시황
- 나스닥
- 다우산업
- LG전자
- e-mailwriting
- Java
- toeice-mail
- android
- S&P
- Python
- 파이썬
- Today
- Total
Developer MJ Story
[C++/Reference] 참조자 활용 방법 본문
이전 포스팅에서 참조자에 대해서 알아 봤습니다.
그런데…..이거 도통 어디에 쓰이는지…….. 모르겠죠?? 왜 쓰는지도 모르겠고요…ㅋ
그래서 이번 포스팅에서는 참조자reference 활용 방법에 대해서 알려드리겠습니다.
먼저, C언어에서 중요한 포인트 중의 하나가 call-by-value냐 call-by-reference냐가 있습니다.
참조자가 reference니까 call-by-reference와 연관이 있을 것 같습니다.
저의 설명은 call-by-value/call-by-reference에 대해서 이미 숙지하고 있다는 가정하에 설명 드립니다.
먼저 call-by-reference를 참조자를 이용해서 구현한 예제를 설명 드리겠습니다.
void swapByReference(int &ref1, int &ref2){
cout << "ref1 address : "<< &ref1 <<endl;
cout << "ref2 address : "<< &ref2 <<endl;
int temp = ref1;
ref1 = ref2;
ref2 = temp;
}
int main( ) {
int num1 = 10;
int num2 = 20;
cout << "num1 address : "<< &num1 <<endl;
cout << "num2 address : "<< &num2 <<endl;
swapByReference(num1, num2);
cout << "num1 : "<< num1 <<endl;
cout << "num2 : "<< num2 <<endl;
}
swapByReference()의 인자가 참조자로 선언 되어있습니다.
이 의미는 swapByReference()함수의 인자로 넘어가는 num1, num2 값과 함수의 인자로 받는 ref1, ref2가 가리키는 값이 같다는 의미 입니다.
각각의 주소 값을 출력해보면 num1과 ref1, num2와 ref2 값이 같은 것을 확인 할 수 있습니다.
따라서 num1과 num2의 값이 변경 되어 출력 되는 것을 확인 할 수 있습니다.
사실 이렇게 사용하느니, 그냥 포인터를 인자값으로 넘겨 주면 더 쉬운 것 같다고 생각하실 수 있습니다.
맞는 말이기도 하고 틀린 말이기도 합니다. 왜냐하면, 같은 주소 값을 가리킨다는 것은 단순 변수를 포인터로 넘겨주는 것 보다 엄청난 일을 할 수 있습니다.
그것은 바로 구조체를 넘겨 줄 수 있다는 의미입니다.
참조자를 함수의 인자로 사용하면 구조체를 바로 넘겨 줄 수 있게 됩니다.
좋은 기능인 것 같죠??ㅎㅎ
잘만 사용하면, 쉽고 빠른 프로그램을 만들 수 있게 됩니다.
그리고 또 한가지, cont이다.
참조자를 선언할 때 cont를 붙이면, 해당 함수 내에서 해당 변수로 값 변경이 불가능하며, 참조만 가능하다.
해당 함수내에서 참조만 가능하게 하고 싶다면 꼭, const를 선언하자.
'Software > C++' 카테고리의 다른 글
[C++/reference] C++ 참조자 (0) | 2014.09.26 |
---|---|
[C++/namespace] 함수와 변수를 구분할 수 있는 이름 공간(namespace) (0) | 2014.09.07 |
[C++ / Function Overloading] C++ 함수 오버로딩 (0) | 2014.09.02 |
[C++/Input, Output] C++의 기본 화면 입출력 – cin, cout (0) | 2014.09.02 |