-첫번째, const int *n; : const가 자료형 뒤에 붙을 경우를 "데이터 상수"라고 하고 n이라는 포인터가 가리키는 대상을 상수화 하겠다는 의미가 된다.
#include <iostream> using namespace std; const int *n; void main() { int b=10; n= &b; b=20; cout<<b<<endl; *n=30; }
n이라는 포인터가 가리키는 곳을 b로 지정하고, b의값은 변경하면 무리 없이 변경되는 것을 볼수 있지만, *n=30; 이부분에서는 직접 실행해보면 에러가나는 것을 알수 있다. n이 지닌 값은 변경이 되지않는것이다. 즉,실제로 메모리 공간 자체가 상수화 된것은 아니고, n이라는 포인터를 이용해서 데이터 변경을 막겠다는 의마가 된다.(하지만, 변수b를 이용할경우 변경이가능하다)
-두번째, int * const n :위와같이 const앞에 붙은경우를 "포인터 상수화"라고 한다.
#include <iostream> void main() { int a=20; int b=10; int * const n= &b; n=&a; }
위와같이 선언한 n이라는 포이너가 b를 가르키고 있을시에, 이런상황에 변수 a를 가르키도록하려는 것을 허용하지않음.