const의 위치에 따라 상수화 되는 대상이 달라진다. 앞에서 작성한 const에 대한 설명에서 중복으로 나오는 내용이다.
char* const str
은 str을 상수화 하는것이다. 즉, 번지를 상수화 하는것이다.
char* const str ="HELLO" 라고 하면 str이 상수화 하기때문에 str은 항상 HELLO를 가리킨다. str에 다른주소인 "HI"의 주소를 대입하려고 하면(str="HI" 라고하면) str은 이미 상수화 되어서 HELLO의 주소를 가지고 있기 때문에 에러가 발생한다.
하지만 내용은 상수화가 않되기 때문에 HELLO의 내용 일부를 바꿀수 있다.(HOLLO)
const char *str
은 char *str을 상수화 하는것이다. 즉 포인터 str이 가리키는 내용을 상수화 하는것이다.
const char *str = "HELLO"라고 하면 str이 가리키는 HELLO가 상수화 되기 때문에 HELLO중 일부를 바꾸려고 하면(HOLLO 라고하면) 에러가 발생한다.
하지만 주소는 상수화가 않되기 때문에 str="HI"는 가능하게 된다.
만약 포인터와 내용을 모두 상수화 하려면
const char * const 라고 하면 됨