본문 바로가기

프로그램 및 소스

const int *p와 int* const p의 차이점

반응형
int nData = 10;
const int *p = &nData;
int* const p = &nData;

우선, const는 const 키워드의 오른쪽에 있는 것을 상수화 한다.

따라서, 두번째 줄의 const int *p 의 경우에는, int 를 상수화 하는 것이므로 즉 포인터가 가리키는 대상 메모리(nData)를 상수화 시킨 것이다.

따라서 p 를 이용해서 대상 메모리 nData에 대입 연산을 수행할 수 없다.

이 경우가 주로 쓰이는데, 대상 메모리의 값 변경을 원하지 않을 경우 사용한다. 가급적 보호가 필요한 메모리에 대해서는 const를 붙여주는 것이 좋다.


세번째 줄의 int* const p 의 경우에는, p 를 상수화 하는 것이므로 포인터 변수 자체를 상수화 하는 것이다.

따라서 선언 후 포인터 p 자체에 대입 연산을 수행할 수 없다 (포인터가 가리키는 메모리를 바꾼다거나)

반응형