본문 바로가기

Program Languege/C/C++

const의 선언 위치

const 선언 위치

 

 

 

 

 

1) const int *p1;

 

 여기서 const의 의미는 포인터 p1이 가리키는 변수의 값을 바꾸지 않겠다는 의미이다. p1이 가리키는 대상은 얼마든지 바꿀 수 있다. 다만 주소를 통한 참조로 값을 바꿀 수는 없다. 그렇기때문에 17번째 줄에서 오류가 발생한다.

 

 

 

 

2) int const *p2;

 

 이 경우도 위에 1)과 같은 의미가 된다. 위에 코드를 보면 알겠지만 같은 동작에서 같은 오류가 발생하고있다.

 

                                 

                   const int *p    ==    int const *p

 

 

3) int * const p3;

 

 여기서 const의 의미는 const int a = 0;처럼 해당 변수를 상수화 시키는 것으로 이 포인터 p3가 한번 가리킨 대상을 절대 바꾸지 않겠다는 뜻이다. 대신 가리킨 대상을 주소를 통해 참조하여 값을 바꾸는 것은 가능하다. 그렇기때문에 선언시 초기화를 해주어야 오류가 발생하지 않는다.

 

 

 

 

결론은 다음과 같다.

 

     const int *p    ==       int const *p      !=     int * const p

 

const를  의도에 맞게 위치시켜서 작성합시다.

 

 

'Program Languege > C/C++' 카테고리의 다른 글

얕은 복사, 깊은 복사  (0) 2014.03.13
Console  (0) 2014.03.05
템플릿 - 4  (0) 2013.03.19
템플릿 - 3  (0) 2013.03.19
템플릿 - 2  (0) 2013.03.19