Posted
Filed under 공부한 것들/C/C++

포인터 변수를 정의 할때는 const를 최대2개까지 포함 할수 있음.(포인터 변수자체에 보관된 정보, 포인터가 가리키는변수에 보관된 정보)

Const 속성이 전혀 적용되지 않은포인터

int i1 = 10;
int i2 = 20;
int* p = &i1;

p = &i2; //OK
*p = 30; //OK
05 : 포인터 변수에 변수에 값을 대입(const 여부에 따라서 오류가 날수 있음)
06 : 포인터가 가르키는 변수에 값을 대입(const 여부에 따라서 오류가 날수 있음)

포인터가 가르키는 변수가 const 인 경우
int i1 = 10;
int i2 = 20;
const int* p = &i1;

p = &i2; //OK
*p = 30; //Fail
p가
가르키는 변수는 const int 타입이라는 의미(=06번째 줄처럼 p가 가르키는 변수의 값을 변경하는 것을 허용하지 않음)

포인터 자체가 Const 인 경우
int i1 = 10;
int i2 = 20;
int* const p = &i1;

p = &i2; //Fail
*p = 30; //OK
int 타입을 가리키는 p는 const 속성을 갖는다라는 의미(=05번째 줄 처럼 p의 값을 바꾸는 행위는 허용하지 않음, p라는 포인터 변수는 const지만 p가 가르키는 변수는 const가 아니므로 포인터가 가르키는 변수의 값을 변경하는 것은 가능.)

포인터를 가르키는 변수도 const 포인터 변수도 const
int i1 = 10;
int i2 = 20;
const int* const p = &i1;

p = &i2; //Fail
*p = 30; //Fail
포인터 p와 p가 가르키는 변수까지도 const(따라서 05,06 Line 모두 Error)
2009/01/05 20:08 2009/01/05 20:08