[C, C++] int const, const int, int const *, int * const

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가 되기 때문에 값은 수정이 가능하다.

Leave a Comment