포인터 표기법에서 const가 붙게 되면 포인터와 포인터가 가리키는 것 중 어느 것이 상수가 되는지 이해하는 것이 중요하다.
아래의 방법으로 읽으면 쉽게 이해할 수 있다.
아래의 방법으로 읽으면 쉽게 이해할 수 있다.
포인터 심볼인 * 를 기준으로 읽는다. * 를 pointer to 라고 읽으면 쉽게 이해 된다.
- int * ptrA - ptrA is pointer to int. ( ptrA는 int 를 가리키는 포인터 )
- int const * ptrA - ptrA is pointer to const int ( ptrA 는 const int를 가리키는 포인터 )
- int * const ptrA - const ptrA is pointer to int ( const ptrA 는 int 를 가리키는 포인터 )
- int const * const ptrA - const ptrA is pointer to int const ( const ptrA 는 int const 를 가리키는 포인터 )
위의 표기법에서 2, 4번은 아래와 같이 변경하여 표기할 수 있다.
- int const * ptrA == const int * ptrA - ptrA is pointer to const int.
- int const * const ptrA == const int * const ptr
2중 포인터와 const 표시도 쉽다. * 를 pointer to 로만 읽으면 되기 때문이다.
- int ** ptrA - ptrA is pointer to pointer to int
- int ** const ptrA - const ptrA is pointer to pointer to int
- int * const * ptrA - ptrA is pointer to const pointer to int
- int const ** ptr - ptr is pointer to pointer to int const
- const int ** ptr - ptr is pointer to pointer to const int
- int * const * const ptr - const ptr is pointer to const pointer to int
* 를 기준으로 const가 왼쪽에 있으면 포인터가 가리키는 것이 상수가 되는 것이고 const가 오른쪽에 있으면 포인터가 상수가 되는 것이다. const가 양쪽 모두 있다면 포인터와 포인터가 가리키는 것 모두 상수가 된다