포인터와 참조자의 차이점

개발자는엉금엉금·2022년 9월 21일
0
  1. 포인터는 NULL로 초기화할 수 있지만 참조는 NULL 초기화를 할 수 없다.

    int* p =nullptr;
    int& r = nullptr // error!
    int &num1 = 2; 와 같이 상수를 참조 불가능
    int &num1; 와 같이 참조하는 값이 없는 경우 선언 불가능

  2. 포인터는 주소 값을 저장하기 위해 메모리 공간을 소모하지만, 참조는 같은 메모리 공간을 참조하므로 추가적으로 메모리 공간을 소모하지 않는다.

포인터를 매개변수로 함수 인자 전달 시 메모리 소모가 일어나고, 값 복사가 일어나지만 참조로 함수 인자를 전달할 시 메모리 소모가 없고 값 복사 또한 발생하지 않는다.

📢단, swap함수와 같이 call by reference를 하면 함수를 호출할 때 메모리가 할당된다.

💡결론:구조체나 class같이 객체를 불러올 때 메모리 소모를 줄이고자 한다면, 참조자를 쓰자!

0개의 댓글