포인터 ( Pointer ) 와 const
- 포인터는 래퍼런스( & )와 달리 참조하는 대상을 언제든지 수정할 수 있지만, const 를 이용해서 참조 대상을 변경하거나 가리키는 값을 수정하는 것을 방지할 수 있습니다.
const 위치의 따른 기능 차이
상수 포인터 ( * const )
int num = 100;
int * const ptr = #
- 상수 포인터는 래퍼런스와 동일하게 초기화 이후 가리키는 대상을 변경할 수가 없습니다.
- 역참조하여 값을 수정하는건 가능합니다.
상수에 대한 포인터 ( const * )
int num = 100;
int const * ptr1 = #
const int * ptr1 = #
- * 의 왼쪽에 const 가 있다면은 포인터가 가리키는 값을 수정할 수 없습니다.
- 프로그래머 스타일에 따라서 데이터 타입 왼쪽 또는 오른쪽에 const를 작성하며, * 의 왼쪽에만 있으면 기능은 동일합니다.
상수에 대한 상수 포인터 ( const * const )
int num = 100;
int const * const ptr = #
- 참조하는 대상 그리고 역참조 값 또한 수정할 수 없습니다.