[C/C++ - 상수] const 키워드에 대한 새로운 발견

[참고: The C++ Programming Language C++ 프로그래밍 언어]

const char *const cpc;
낮선 표현을 접하고 난 후 자료를 찾아 보면서
const 키워드의 위치에 따라 상수의 의미가 달라짐을 알게 되었다.

void f1(char* p)
{
 char s[] = "Gorm";

 const char* pc = s; // 상수 문자에 대한 포인터
 //char const* pc = s;
 pc[3] = 'g';    // error: pc는 상수를 가리킴
 pc = p;       // ok

 char *const cp = s; // 문자에 대한 포인터 자체가 상수
 cp[3] = 'a';    // ok
 cp = p;       // error: cp는 그 자체가 상수

 const char *const cpc = s; // 상수 char에 대한 상수 포인터
 cpc[3] = 'a';    // error: cpc는 상수를 가리킴
 cpc = p;      // error: cpc는 그 자체가 상수
}


const와 *의 상대적 위치에 따라 해석이 달라진다.

1. *를 기준으로 const가 오른쪽에 있으면 포인터 자체가 상수
예) char *const cp; // char에 대한 상수 포인터

2. *를 기준으로 const가 왼쪽에 있으면 포인터가 가리키는 대상이 상수
예) char const* pc; // const char에 대한 포인터
     const char* pc2;// const char에 대한 포인터

by heeya | 2007/01/30 11:23 | [프로그래머] Program | 트랙백

트랙백 주소 : http://heeyanara.egloos.com/tb/869415
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
※ 로그인 사용자만 덧글을 남길 수 있습니다.

<< 이전 페이지다음 페이지 >>