G Y U L O G

title

헷갈리는 부분 정리하는 겁니다. 틀린부분 있으면 댓글로 달아주세요.

포인터변수의 상수화

▶참조하고 있는 변수를 수정할 수 없는 경우

 

아래 두 줄 먼저 보겠습니다.

int const *ptb = &value;
const int *ptc = &value;

이 두 줄은 완전히 같은 문장입니다.

 

단순히 int 와 const의 위치만 바뀐거죠. 

 

의미는 *ptb(*ptc) 를 상수로 만드는 겁니다.

 

이 말은 참조연산자를 통해 원래 값인 value 값을 바꿀수 없다는 말입니다.

*ptb = 2;

이렇게 못한다는 거죠.

 

하지만 주소값을 새로 할당하는 건 됩니다.

ptb = &new;

정리해보면 *ptb는 l-value로 불가능, ptb는 가능입니다.

 

▶포인터변수의 주소값 자체를 상수화시켜버리는 경우

int *const pta = &value;

pta의 경우죠.

pta = &new;

이렇게 할 수 없다는 말입니다.

 

pta는 오직 value값의 주소만을 가지게 되는 문장이 첫 줄입니다.

 

정리해보면 *pta는 l-value로 가능, pta는 불가능입니다.

 

댓글과 공감은 정말 큰 힘이 됩니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band