C++ - 포인터 변수에서 const 위치에 따른 차이
변수에 const를 사용하는 이유와 사용 방법은 아주 쉽다.
그런데 포인터 타입 변수에 const를 붙였을 때 포인터의 앞이나 뒤 어디에 붙여야 할지 헷갈릴 때가 있다.
포인터에 const를 붙이는 경우 아래에 따라서 차이가 발생한다.
*앞에 const를 붙인 경우는 포인터를 가리키는 곳이 불변이 된다
int value = 42;
const int* p = &value;
p = &value; //OK
*p = 10; //NG
*후에 const를 붙인 경우는 포인터 변수 자체가 불변이 된다
int value = 42;
int* const p2 = &value;
p2 = &value; //NG
*p2 = 10; //OK
참고로 cosnt int * const 식으로 양쪽에 const를 붙인 경우는 『 변수 』도 『 실체 』도 모두 불변이 된다.
int value = 42;
const int* const p = &value;
p = &value; //NG
*p = 10; //NG
이 글은 2017-12-26에 작성되었습니다.