C, C++

parameter as a Reference, pointer 차이 ?

swdream 2020. 4. 5. 16:04
반응형

자료구조 책을 보는데, 자료구조를 구현할 때, 초기화 함수에서 인자를 포인터 변수로 선언했었는데, 그 부분이 껄끄러워서 1. 포인터 변수 인자, 2. 참조 변수 인자 의 차이를 정리하고자 한다. 

인자로 *ptr 를 넣거나, (포인터 인자), 레퍼런스 인자(&ref)를 넣을 때의 차이를 정리하자.

  • 레퍼런스 인자는 이미 존재하는 변수를 또 다른 이름으로 참조할 때 사용하고, 포인터 인자는 변수의 주소값을 저장하기 위해 사용함
  • 레퍼런스 인자는 null value를 가질 수 없지만, 포인터 인자는 null value를 가질 수 있음
  • 레퍼런스 인자는 반드시 초기화가 되어있어야 사용 가능하지만, 포인터 인자는 그럴 필요가 없음.
  • 레퍼런스 인자는 오리지널 변수와 같은 주소공간을 공유하면서 또한, 스택 공간에 추가 메모리가 할당되기도 하지만, 포인터 인자는 오직 해당 메모리 주소와 스택위에서는 그 사이즈만큼만을 공간으로 갖는다.(여지가 없음)  

출처: https://www.tutorialspoint.com/what-is-difference-between-a-pointer-and-reference-parameter-in-cplusplus

반응형