프로그래밍/C
[C언어] 포인터, const 키워드
NONAME5
2015. 4. 23. 23:17
const 키워드를 포인터 앞에 붙이면 포인터를 상수화 한다.
포인터 자체를 상수화.
포인터가 가리키는 변수를 상수화.
이 두가지 의미가 있다.
1. 포인터가 가리키는 변수의 상수화.
int a = 10;
const int* p = &a;
*p = 30 ; //안됨.
a = 30; //가능.
포인터 p가 가리키는 변수의 값을 못 바꾸게 하겠다는 의미.
a자체가 상수화 되는 것이 아니고, 포인터 p를 통해서 변수 a값을 변경하는 것을 막는다.
2. 포인터 상수화
int a = 10;
int b = 20;
int* const p = &a;
p = &b; // 오류
*p = 30; //된다.
포인터 p가 지니는 주소 값을 변경 할 수 없다는 뜻이다.
따라서, 포인터도 상수화 시키고, 포인터가 가리키는 데이터도 상수화하려면?
const int* const p = &a;
void print(const int* ptr)
{
int *p = ptr; //에러.
}
ptr은 const 키워드에 의해서 상수화 되어있다.
이는 print 함수 내에서 ptr이 가리키는 변수의 조작을 허용 않겠다는 의미.
따라서, int* 로의 대입이 허용되지 않는다.