-첫번째, 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를 가르키도록하려는
것을 허용하지않음.
RECENT COMMENT