카테고리 없음

열혈 C++ 참조자(Reference)

빠빡형 2022. 1. 21. 16:44

chpater 2에 Reference 참조자에 대해서 간략하게 정리하려한다.

늘 포인터와 참조자가 많이 헷갈렸다.

참조자는 주소를 의미하여 다른 이름으로 같은 공간을 가리킬 수 있고

포인터는 그 주소를 가리킬 수있는것

int &num1 = num2 ;   ---> num1이 num2 를 참조했다. 즉, 주소가 갔고 서로 모든게 갔다. 주소,변수값 etc..

int *ptr = &num1 ;      ---> num1의 주소 값을 반환해서 포인터 Prt에 저장한다.를 의미한다.

 

결국 참조자가 어느 위치에 쓰이냐에 따라 그 의미기 달라진다.

1) 새롭게 선언된 변수에 선언될 때 

   int num2 = 3;

   int &num1 = num2 ;     

 

2) 주소값을 반환하는

  int num1 = 3;

   int *ptr = &num1;

 

 

결과)

 

모든것을 같은것을 가리킨다.

 

결국 쉽게 참조가 되어있으면 num1의 값을 변경하면 Num1이 가리키는 공간에 3이 저장이 된다.

그 공간은 num의 이름이기도 함으로 num을 출력하면 3의 결과가 나온다.

*** 정리 ***

변수 : 할당되는 메모리 공간에 붙여진 이름. 이름을 통해서 메모리 공간 접근이 가능하다.

 

할당된 메모리 공간의 여러 이름을 붙일 수 있는게 바로 Reference 참조자이다.

 

참조자 갯수의 제한은 없다!

 

int &num = 30;   ( X ) 30은 메모리 공간이 없음으로 할당이 안됨.

Int #            ( X ) 미리 선언도 불가능.

 

 

 

*pointer

*는 메모리 주소를 저장한다고 생각하면 된다.

   Int num = 1;

   int * ptr = & num ;

 

   num이라는 공간이 있고 그 공간의 주소를 000xx11이고 공간에는 값 1이 들어있다.

   ptr이라는 공간이 있고 그 공간의 주소를 000xx22이고  공간에는 000xx11 (num)의 주소가 들어있다.

   cout << *ptr ;          ---> 1

   cout << ptr ;            ---> 000xx11

   cout << &ptr ;          ---> 000xx22