참조랑 포인터랑 기능이 비슷해서 헷갈린다.
그래서 따로 정리해보았다.
참조
포인터
이중 포인터
// 메모리 효율이 좋다는 공통점이 있지만 접근 방식이 다르다. void function (vector<int>* arr){} // 객체를 가리키 포인터를 전달 void function (vector<int>& arr){} // 객체 자체를 가져옴
- 둘 다 객체 읽기 쓰기 가능하다.
- 참조는 객체 조작이 편하다는 장점이 있다.
- 포인터는 동적 프로그래밍에 적합하다는 장점이 있다.
추가로 const 키워드도 사용된 위치에 따라 기능이 다 다르고 알면 유용한 게 많더라.
디버깅에도 유용하고 명시적인 효과도 있어서 좋은 듯.
void function (const vector<int>& arr){} // 객체 자체를 가져옴 // 값을 읽을 수 있지만 쓸 수 없음 void function () const {} // 멤버 함수가 객체를 읽을 수 있지만 수정할 수 없음
![[CS] Reference&Pointer](/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fattachment%253Ae7db6ed7-a29e-47eb-985e-b3e266301a2d%253Acs.png%3Ftable%3Dblock%26id%3D1f887e7f-a582-8128-aaae-e49804d4bcdb%26cache%3Dv2&w=3840&q=75)