티스토리 뷰

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 자체에 대입 연산을 수행할 수 없다 (포인터가 가리키는 메모리를 바꾼다거나)

댓글
댓글쓰기 폼
공지사항
Total
218,662
Today
149
Yesterday
363
링크
TAG
more
«   2018/08   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
글 보관함