Reading Rule

포인터 선언은 변수 이름 p를 기준으로 잠긴 쪽을 찾는다

복잡한 포인터 선언은 문장처럼 외우기보다 p를 중심에 두고 읽습니다. p 오른쪽의 const는 포인터 변수 고정, p 왼쪽 타입의 const는 가리키는 값 고정입니다.

타입 쪽 constconst int* pp가 가리키는 int 값을 p를 통해 수정할 수 없습니다.
이름 쪽 constint* const pp 자체를 다른 주소로 다시 묶을 수 없습니다.
선언
p 기준 해석
금지되는 것
const int* p
p는 포인터, 대상 int는 const
*p = 10
int* const p
p는 const 포인터, 대상 int는 수정 가능
p = other
const int* const p
p도 const, 대상 int도 const
*p = 10p = other
선언을 읽을 때는 먼저 변수 이름을 찾고, const가 값 쪽인지 포인터 변수 쪽인지 나눕니다.