2007년 01월 30일
[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에 대한 포인터
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 | 2007/01/30 11:23 | [프로그래머] Program | 트랙백





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]