const는 변수를 상수화 하기 위한 선언이다. 포인터 변수에도 const 선언이 가능하다.

#include <stdio.h>

int main(void)
{
    int num = 20;
    const int * ptr = &num;
    // *ptr = 30;   // 컴파일 에러
    num = 30;

    printf("test\n");
    return 0;
}

위 코드와 같이 const 선언한 포인터 변수가 가리키는 변수에 저장된 값을 변경하는 것은 허용되지 않는다. 그러나 num변수로 직접 값을 변경하는 것은 가능하다. 

다음 코드와 같이 const 선언은 포인터 변수의 이름 앞에 올 수 도 있다.

int * const ptr = &num;

위와 같이 변수 이름 앞에 const 선언을 했을 경우에는 주소 값의 변경이 불가능하다. 한 번 가리키기 시작한 변수를 끝까지 가리켜야 한다는 것이다. 가리키는 다음과 같이 가리키는 대상에 대한 저장된 값의 변경은 가능하다.

*ptr = 30;

다음과 같이 const선언을 하게 되면 주소값의 변경과, 가리키는 대상이 저장된 값 모두 변경이 불가능하다.

const int * const ptr = &num;

 

'Language > C, C++' 카테고리의 다른 글

[C] 3차원 배열  (0) 2020.12.26
[C] 2차원 배열  (0) 2020.12.24
[C] Call - by - value, Call - by - reference  (0) 2020.12.20
[C] 함수 인자로 배열 전달  (0) 2020.12.20
[C] 포인터 배열  (0) 2020.12.19

+ Recent posts