포인터 변수가 바뀐다는 것은
딴놈을 가르키던지 아무것도 안 가르킨다던지 둘중 하나이다.
두가지 개념이 존재한다.
내가 가르키고 있는 원본을 바꿀 것인지 말 것인지
포인터 변수 자체가 상수화가 되어서 더이상 다른 대상을 가르킬 수 없게 될 것인지
이것은 const가 붙는 위치에 따라 달라진다.
이렇게 뜬다.
이전시간인가 l-value 배웠제?? (변수)
지금 이상태는 포인터 변수 자체가 상수화가 된게 아니다.
이렇게도 가능함.
이렇게하면 지금 가르키고있는 주소의 값을 바꿀 수 없다는 것이다.
int* const pIntConst = &a;
하게되면 이제 다른 변수의 주소를 받을 수 없다.
이렇게하면 지금 가르키고있는 주소의 값을 const화 하겠다. (주소 못바꾼다)
이렇게하면 처음 가르킨것만 가르킬 수 있고 그 주소의 값을 바꿀 수도 없다.
즉, 초기화시 가르킨 대상만 가르킴, 가르키는 원본을 수정할 수 없음
이거는 const 포인터 이다.
위치 기준은 * 별이다.
별 기준으로 앞에있냐 뒤에있냐 이다.
이렇게 하면 a = 100; 이 가능하냐?
답은 당연히 된다.
지금 이것은 *pInt = 100; 처럼 포인터 변수를 사용해서 값에 접근하는 것을 막는 것이지
a라는 변수를 상수화 시킨것이 아니다.
a랑은 무관한 것이다.