본문 바로가기

객체지향

포인터와 참조

반응형

포인터(pointer) : 변수의 주소를 담는 변수 

=>변수의 값을 읽거나 변경하는 등, 변수에 적용 가능한 연산은 모두 포인터를 통해 할수 있다

=>두 포인터가 같은 주소를 가리키는 경우에 한 포인터가 가리키는 변수의 값을 변경하면 다른 포인터가 가리키는 변수의        값도 바뀐다.








Q> 면접관이 어떤 자료구조를 메모리에 올리기 위해 필요한 메모리의 크기를 자주묻기 때문에 유의 해야 할 점 !


포인터 변수의 크기는 아키텍처에 따라 달라진다. 

32비트 컴퓨터에서는 32비트가 되고, 64비트 컴퓨터에서는 64비트가 된다. 



참조 : 기존에 존재하는 객체에 붙는 또 다른 이름이며 별도의 메모리를 갖지 않는다.



2번째 줄에서 b는 a의 참조로 선언 되었다. 따라서 b를 변경하면 a도 바뀐다. 

참조 대상 메모리가 어디인지를 명시하지않고 참조를 만드는 방법은 없다. 하지만 다음과 같이 독립적인 참조를 만들수 있다.


       예>  const int &b=12; /*12를 저장하기 위한 메모리를 할당하고 b가 해당 메모리를 참조하도록 한다 */


Q> 포인터와 참조의 차이점은? 

     참조는 null이 될수 없으며 다른 메모리에 재 할당 될 수도 없다. 




[포인터 연산]



p++을 실행하면 p는 sizeof(int) 바이트만큼 나아간다. 그래서 위의 코드를 실행하면 1이 출력된다. p가 다른 타입이었다면, 해당 타입의 크기만큼 나아갔을 것이다 .






출처:코딩 인터뷰 189가지 프로그래밍 문제와 해법 완전분석(프로그래밍 인사이트 )



반응형

'객체지향' 카테고리의 다른 글

추상화와 인터페이스  (0) 2018.08.23
객체지향 알아 둘 것  (0) 2018.03.27
가상소멸자  (0) 2018.03.27
가상함수  (0) 2018.03.26
클래스와 상속  (0) 2018.03.26