최상단 광고

2012년 4월 16일 월요일

[C++강좌] - 2-2. Reference란

오늘 하루 쫙~ 강좌 나가봅시다!! 

잼군요 하핫;;

 *이 강좌는 C언어를 끝냈다는 가정하에 실시합니다.

┌───────────────┐
---앞으로의 목차---
2-2. Reference란.
2-3. 레퍼런스와 함수
2-4. 레퍼런스의 이용
└───────────────┘

<지난 강좌를 살펴보고 와주세요 !! : http://blog.naver.com/owndks98o/120155831162 >

2-2. Reference란.
레퍼런스가 무엇일까요?
이해를 돕기위해 간단한 예를 들어 이야기해 봅시다.

우리는 사람을 부를때에 이름으로 부르기도 하지만, 그 사람의 별명을 가지고 그 사람을 이야기 하기도 합니다.

즉, 여기서의 "이름"과 "별명"에 대해
"이름"=="별명"
이 성립하는 것이죠.

이것이 레퍼런스 입니다.
이미 존재하는 변수에 별명을 부여해 주는 것이죠.

레퍼런스를 선언하는 방법, 즉 별명을 붙이는 방법은 간단합니다.
int형 val이라는 변수가 있을때에,
int &ref=val;
의 한줄로써 별명을 만들수 있습니다.

?? 한가지 이해가 안가는 부분이 있군요.
'&'
연산자는 C의 포인터에서도 사용하였습니다.
그러고 보니 레퍼런스가 포인터와 비슷한거 같기도 하고요.
(하지만 포인터는 "주소값"을, 레퍼런스는 "변수 제2명"에 대해 다릅니다.)

하지만 아래의 예제를 보면 분명 다르다는 것을 알수 있습니다.

int main(){
int val=0;

int *ptr=&val;   //주소값 얻어오기
int &ref=val;    //레퍼런스 선언

return 0;
}

어때요? 다르죠? 하핫;;

레퍼런스를 선언할때에는 단 1가지 규칙만이 필요합니다.
  • 변수명을 대입하여 초기화 하여야 한다.
간단하죠?

따라서, 요약하면,
레퍼런스는 하나의 메모리 공간에 2개 이상의 이름을 붙여주는 것
입니다.

레퍼런스는 포인터 연산에 유리하다는 듯, 여러가지 장점이 있습니다.
적어도 포인터 연산을 잘못해서 에러가 나는 일은 없으니까요.

이상으로 다음강에서 뵙겠습니다!

댓글 없음: