2016년 3월 8일 화요일

[c++] 변수(Variable), 레퍼런스(Reference)


변수: 메모리 공간에 붙은 이름 

C에서는 하나의 메모리 공간에 하나의 이름만을 가지고 있었는데, C++에서는 하나의 메모리 공간에 둘이상의 이름을 붙여 줄 수 있죠. 그것이 바로 레퍼런스입니다. 


레퍼런스 : 이름을 지니는 대상에 별명을 붙여주는 행위. 
  1. int main()  
  2. {  
  3.     int val =10;  
  4.     int *pVal = &val; //주소 값을 얻기 위해 & 연산자 사용의 예  
  5.     int &Val = val; //레퍼런스 선언을 위한 &연산자 사용  
  6.   
  7.     return 0;  
  8. }  

 '&' 연산자를 이용해 마음대로 변수에다가 별명을 붙여 줄 수 있는데요. 아래 예제를 보시죠.
  1. #include <iostream>  
  2. using namespace std;  
  3.   
  4. int main()  
  5. {  
  6.     int val =10;  
  7.     int &AAA = val; //레퍼런스 선언을 위한 &연산자 사용  
  8.     AAA = 20;  
  9.   
  10.     cout<< "val value is  : "<<val <<endl;  
  11.     cout<< "AAA value is  : "<<AAA <<endl;  
  12.   
  13.     val = 40;  
  14.   
  15.     cout<< "val value is  : "<<val <<endl;  
  16.     cout<< "AAA value is  : "<<AAA <<endl;      
  17.   
  18.     return 0;  
  19. }  
 아래 예제를 실행한 결과 입니다. 

 레퍼런스를 이용한 변수의 값을 변경하여도 어차피 AAA나 val은 같은 메모리 공간을 가지고 있기 때문에 위와 같은 출력 결과를 출력하는 것을 알 수 있습니다. 

댓글 없음:

댓글 쓰기

[Effective C++] 항목 30 : 인라인 함수는 미주알고주알 따져서 이해해 두자.

인라인 함수를 사용하면 컴파일러가 함수 본문에 대해 문맥별 최적화를 걸기가 용이해집니다. 인라인 함수의 아이디어는  함수 호출문을 그 함수의 본문으로 바꿔치기하자는 것  남발했다가는 코드의 크기가 커질 게 뻔하다. 인라인 함수로 부풀려진 ...