열혈 C++ 참조자(Reference)
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

