const(상수)
변수와 달리 const는 한번 만들어진 자료를 수정할 수 없게 상수로 만든다.
C, C++외 다른 언어에서는 const외 readonly, final과 같은 유사한것들도 있다.
int const, const int
const는 위치가 가변적이며 int const는 const int와 같다. 편하게 int를 썼을 뿐 특정 자료형과 관련이 있지는 않다. char const, const char도 마찬가지다.
int const *, int * const
포인터 변수의 경우 const 위치에 따라 결과가 달라진다.
#include <stdio.h> int main(){ const int * a; int const * b; int * const c; *a = 1; // error a = 0x0; *b = 1; // error b = 0x0; *c = 1; c = 0x0; // error }
int const와 const int는 같다. 따라서 int const * 와 const int * 는 같다.
int const * 는 값이 const가 되기 때문에 포인터는 수정이 가능하다.
int * const 는 포인터가 const가 되기 때문에 값은 수정이 가능하다.