Superkkt Blog

const 한정자의 해석

2007/01/10 13:26

프로그래밍 하면서 함수가 문자열을 인자로 받을때 해당 문자열을 변경하지 않는다는걸 명시적으로 보여주기위해 const 한정자를 자주 사용한다. 지금까지는 그냥 무턱대고 const를 붙여서 사용했는데 이게 어떤 의미를 가지는지 한번 살펴보자.

const unsigned char *str

위 선언은 문자열을 받으면서 많이 사용하는 표현이다. 보통 "unsigned char의 변하지 않는 포인터"라고 생각하고 사용했는데, 알아보니 "변하지 않는 unsigned char의 포인터"가 맞는 표현이다. 더블 포인터도 마찬가지다. 한글로 쓰니까 좀 이상하게 보이는데 cdecl로 한번 살펴보자.

[superkkt@backup1 ~]$ cdecl
Type `help' or `?' for help
cdecl> explain unsigned char *a
declare a as pointer to unsigned char
cdecl> explain const unsigned char *a
declare a as pointer to const unsigned char
cdecl> explain const unsigned char **a
declare a as pointer to pointer to const unsigned char

그럼 처음에 얘기했던 "unsigned char의 변하지 않는 포인터"는 어떻게 선언해야 할까? 이렇게 하면 된다.

[superkkt@backup1 ~]$ cdecl
Type `help' or `?' for help
cdecl> explain unsigned char * const a
declare a as const pointer to unsigned char

2007/01/10 13:26 2007/01/10 13:26

trackbacks

trackbacks rss

이 글에는 트랙백을 보낼 수 없습니다

Leave a Comment