@ 16. 1 ~ 17. 1/C++

const의 위치에 따른 이야기..

namoeye 2013. 2. 23. 21:12

일반 변수형..

cont int a=10;

int const a=10;

같다. 똑같다 그냥..

그런데.. 포인터형을 가지고 있을때..

int* const ptr; ---- (1)

const int* ptr; ---- (2)

이 두개는 비슷해보여도..틀리다.

 

우선 1번은..자료형보다 앞에 있으니까..int* const // const가 자료형보다 뒤에 있으니까..(우측기준..)

이건 ptr이 해당 주소를 변경하지 못한다는 이야기임..주소가 상수

즉, int* const ptr=&a; 일때

ptr=&b; 가 안된다는 것이다.

물론..*ptr=값 이런식으로 해당주소의 값은 변경이 가능하다.

그리고 이것은 초기화가 필요하다. int* const ptr; 이런식이면 에러..int* const ptr=&a; 이런식이 되야함..

 

다음 2번은 자료형보다 앞에 있으니까..자료형을 상수화 자료를 상수화..?!

해당주소의 정수를 상수화 한다.

즉, *ptr=값 이런식으로 안된다는 것이다.

물론..ptr=&b; 는 가능하다!..

이건 초기화 필요없음..